[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 メーリングリストの案内