[Seasar-user:21284] Re: [SAStruts]CoolDeploy時にSIllegalArgumentException発生

higayasuo [E-MAIL ADDRESS DELETED]
2012年 3月 12日 (月) 12:39:20 JST


ひがです。

ログを見るかぎりCool DeployではなくHot Deployで動いているように見えますね。

> はじめまして。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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



Seasar-user メーリングリストの案内