본문 바로가기
[Developer]/Java

Struts2 2.3.15.1의 버그

by 반가운 해피빈이 2013. 7. 31.

최근 스트럿츠2의 보안성 이슈가 문제가 되어


2.3.15 버전 이하에서 돌리는 모든 스트럿츠2는 2.3.15.1 이상을 설치할 것을 권하고 있다.


현재(2013.7.31)는 아직 2.3.15.1 뿐이라 이 이상으로는 올리지도 못한다..;;



그래서 현재 스트럿츠2가 적용이 되어 돌리고 있던 프로그램을 2.3.15.1로 맞추어 올렸는데...


톰캣에서 돌렸더니 시작시점에


.......

DEBUG [main] -Loaded [BUILDER] {PackageConfig Name:json-default namespace: parents:[{PackageConfig Name:struts-default namespace: parents:[]}]}

DEBUG [main] -The result type [org.apache.struts2.json.JSONResult] doesn't have a default param [DEFAULT_PARAM] defined!

java.lang.NoSuchFieldException: DEFAULT_PARAM

at java.lang.Class.getField(Unknown Source)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:578)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:530)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:292)

at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:250)

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)

at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)

at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)

at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)

at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

at org.apache.catalina.core.StandardService.start(StandardService.java:525)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)

at org.apache.catalina.startup.Catalina.start(Catalina.java:595)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

DEBUG [main] -Found following implementations of FileManager interface: [system, jboss]

DEBUG [main] -No user defined FileManager, looking up for internal implementations!

DEBUG [main] -Cannot load [org.jboss.vfs.VirtualFile] class, not a JBoss 7!

.......


와 같이 에러가 나는것이다~!


이 문제좀 해결해보겠다고 이리저리 사이트를 뒤졌지만.. 결국은 해결 못하고..

원인은 알아냈다.


원인은 간단하다.

DEFAULT_PARAM이라는 멤버변수가 org.apache.struts2.json.JSONResult 클래스에 없기 때문이다.

이 클래스는 struts2-json-plugin-2.3.15.1.jar 파일에서 제공하고 있는데..


이걸 실제로 열어보니 없는 것이다. jad로도 봐도 없고.. 소스를 직접 봐도 없었다;;


그래서 해결하려고 소스도 직접 받아서 jar로 묶을 생각까지 했었다.


하지만, 이것은 DEBUG 로그일 뿐. 엄밀하게는 ERROR 로그도 아니다.


결국, 그냥 두기로 했다.. 오픈 프로젝트 소스 커밋하는 곳을 보니.. 이 문제는 해결을 했다. 하지만 릴리즈를 안했을 뿐이다. 그냥 다음 버전 릴리즈때 적용해서 버전발행하면 되겠다.ㅎ



이 메세지를 보는 사람이 있다면, 쿨~ 하게 넘어가주시길.



댓글0