[Seasar-user:21283] [SAStruts]CoolDeploy時にSIllegalArgumentException発生
Shinji Miura
[E-MAIL ADDRESS DELETED]
2012年 3月 10日 (土) 22:49:52 JST
はじめまして。arephと申します。
現在SAStrutsを利用して開発をしております。
開発時はHotDeployで開発を行なっていたのですが、ある例外が発生し、調べているとでHotDeployが問題ではないかとの情報があったためにCoolDeployでアプリのデプロイを試みました。
するとHotDeploy時には発生しなかった例外が発生し、原因が掴めず調査が難航しております。
心当たりがありましたらアドバイスを頂けないでしょうか。
以下にコンソールログを記述します。
-------ここから-------
org.apache.catalina.core.ApplicationDispatcher invoke
致命的: サーブレット action のServlet.service()が例外を投げました
org.seasar.framework.exception.SIllegalArgumentException:
[ESSR0094]IllegalArgumentExceptionがクラス(XXX.action.MenuAction)[WebappClassLoader
context: /XXX
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[E-MAIL ADDRESS DELETED]
]の型(XXX.dto.UserDataDto)[WebappClassLoader
context: /XXX
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[E-MAIL ADDRESS DELETED]
]のフィールド(userDataDto)に型(org.seasar.framework.container.hotdeploy.HotdeployHttpSession$SerializedObjectHolder)[WebappClassLoader
context: /XXX
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[E-MAIL ADDRESS DELETED]
]の値(org.seasar.framework.container.hotdeploy.HotdeployHttpSession$[E-MAIL ADDRESS DELETED])を設定するときに発生しました。対象のクラスは(XXX.action.MenuAction$$EnhancedByS2AOP$$7fa3f6)[WebappClassLoader
context: /XXX
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[E-MAIL ADDRESS DELETED]
]です。
at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:171)
at org.seasar.framework.container.assembler.AbstractBindingTypeDef.setValue(AbstractBindingTypeDef.java:346)
at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindAuto(AbstractBindingTypeDef.java:151)
at org.seasar.framework.container.assembler.BindingTypeMustDef.doBind(BindingTypeMustDef.java:45)
at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind(AbstractBindingTypeDef.java:91)
at org.seasar.framework.container.assembler.AccessTypeFieldDef.bind(AccessTypeFieldDef.java:50)
at org.seasar.framework.container.assembler.AccessTypeFieldDef.bind(AccessTypeFieldDef.java:42)
at org.seasar.framework.container.assembler.AutoPropertyAssembler.assemble(AutoPropertyAssembler.java:56)
at org.seasar.framework.container.deployer.RequestComponentDeployer.deploy(RequestComponentDeployer.java:67)
at org.seasar.framework.container.impl.ComponentDefImpl.getComponent(ComponentDefImpl.java:111)
at org.seasar.struts.config.S2ActionMapping.getActionForm(S2ActionMapping.java:329)
at org.seasar.struts.action.ActionFormWrapper.<init>(ActionFormWrapper.java:62)
at org.seasar.struts.action.ActionFormWrapperClass.newInstance(ActionFormWrapperClass.java:82)
at org.seasar.struts.config.S2FormBeanConfig.createActionForm(S2FormBeanConfig.java:44)
at org.seasar.struts.action.S2RequestProcessor.processActionForm(S2RequestProcessor.java:211)
at org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:103)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalArgumentException: Can not set
XXX.dto.UserDataDto field XXX.action.MenuAction.userDataDto to
org.seasar.framework.container.hotdeploy.HotdeployHttpSession$SerializedObjectHolder
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
at java.lang.reflect.Field.set(Field.java:657)
at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:162)
... 62 more
-------ここまで-------
なお、ログ中に出現するXXX.action.MenuActionの内容は以下です。
-------ここから-------
package XXX.action;
import javax.annotation.Resource;
import org.seasar.struts.annotation.Execute;
import XXX.dto.UserDataDto;
public class MenuAction {
@Resource
protected UserDataDto userDataDto;
@Execute(validator = false)
public String index() {
return "index.jsp";
}
}
-------ここまで-------
また、XXX.dto.UserDataDtoの内容は以下です。
-------ここから-------
package XXX.dto;
import java.io.Serializable;
import java.util.Map;
import org.seasar.framework.container.annotation.tiger.Component;
import org.seasar.framework.container.annotation.tiger.InstanceType;
import org.seasar.struts.annotation.Required;
@Component(instance = InstanceType.SESSION)
public class UserDataDto implements Serializable {
private static final long serialVersionUID = -9187941560246753019L;
@Required
public String userId;
@Required
public Map<String, Object> userInfo;
}
-------ここまで-------
そもそも最初に調査していた例外もSIllegalArgumentExceptionだったので何か関連があるかもしれません…。
Seasar-user メーリングリストの案内