[Seasar-user:16715] 【S2Struts】 HotDeployモードでIllegalArgumentExceptionが発生しています。

minami [E-MAIL ADDRESS DELETED]
2009年 1月 22日 (木) 16:02:54 JST


お疲れ様です。南と申します。

早速質問です。

○ 問題

 ローカル開発環境でHot Deployを利用しています。
 java.lang.IllegalArgumentExceptionが発生しています。

○ 開発環境

 S2       2.4.32
 S2Dao    1.0.49
 S2Struts 1.3.0
 Server   Tomcat 5.5.20

○ 解析用情報

     クラスの定義は以下のようです。
     ※セキュリティーのため、XXXに置換しています。

     ============================================================================
     @Component(instance = InstanceType.SESSION)
     public class XX0101LoginUserInfoDto implements Serializable {

         private static final long serialVersionUID = -6187338881905527161L;

         private static final XxxCLogUtil logger
             = XxxCLogUtil.getXxxCLogUtil(XX0101LoginUserInfoDto.class);

         static {
             logger.debug(XX0101LoginUserInfoDto.class);
             logger.debug(XX0101LoginUserInfoDto.class.getClassLoader());
         }

         ※変数は全てStringタイプです。
     ============================================================================
     @StrutsAction(xxxx)
     public class XX0101LoginAction extends XxxCommonAction {

         /** ユーザ情報保持Dto宣言 */
         @Resource(name = "xxxCA_XX0101_XX0101LoginUserInfoDto")
         protected XX0101LoginUserInfoDto loginUserInfoDto;
     ============================================================================

     ① 起動時ログ

      DEBUG 2009-01-22 15:24:53,390 [main] class com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto
      DEBUG 2009-01-22 15:24:53,390 [main] [E-MAIL ADDRESS DELETED]
      DEBUG 2009-01-22 15:24:54,281 [main] class com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto
      DEBUG 2009-01-22 15:24:54,281 [main] [E-MAIL ADDRESS DELETED]

      ⇒2回出力されていろことも怪しいですね。

     ② 画面初期表示 RequestDumpFilter:before

      セッションスコープに格納されていませんので、出力されていない。

     ③ 画面初期表示 RequestDumpFilter:after

     DEBUG 2009-01-22 15:30:09,078 [http-8090-Processor24] class com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto
     DEBUG 2009-01-22 15:30:09,078 [http-8090-Processor24] [E-MAIL ADDRESS DELETED]
     DEBUG 2009-01-22 15:30:09,078 [http-8090-Processor24] クラス(com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto[xxxCA_XX0101_XX0101LoginUserInfoDto])のコンポーネント定義を登録します

     ** after *****************************************: /xxxCA/XX0101/XX0101Init.do
       [session]xxxCA_XX0101_XX0101LoginUserInfoDto=com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto$$EnhancedByS2AOP$$[E-MAIL ADDRESS DELETED]

     ④ ログインボタン押下時

     ** before *****************************************: /XX0101Login.do
       [session]xxxCA_XX0101_XX0101LoginUserInfoDto=com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto$$EnhancedByS2AOP$$[E-MAIL ADDRESS DELETED]

     次に例外が発生します。

     DEBUG 2009-01-22 15:35:22,687 [http-8090-Processor23] class com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto
     DEBUG 2009-01-22 15:35:22,687 [http-8090-Processor23] [E-MAIL ADDRESS DELETED]
     DEBUG 2009-01-22 15:35:22,703 [http-8090-Processor23] クラス(com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto[xxxCA_XX0101_XX0101LoginUserInfoDto])のコンポーネント定義を登録します
     WARN  2009-01-22 15:35:22,953 [http-8090-Processor23] Unhandled exception
     org.seasar.framework.exception.SIllegalArgumentException:
         [ESSR0094]IllegalArgumentExceptionがクラス(com.xxx.xx.xxxxx.cl.action.xxxCA.XX0101.XX0101LoginAction)の
         型(class com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto)のフィールド(loginUserInfoDto)に
         型(com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto$$EnhancedByS2AOP$$b495e)の
         値(com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto$$EnhancedByS2AOP$$[E-MAIL ADDRESS DELETED])を設定するときに発生しました。
         対象のクラスは(com.xxx.xx.xxxxx.cl.action.xxxCA.XX0101.XX0101LoginAction$$EnhancedByS2AOP$$441b45)です。
         at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:167)
         at org.seasar.framework.container.assembler.AbstractBindingTypeDef.setValue(AbstractBindingTypeDef.java:346)
         at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindManual(AbstractBindingTypeDef.java:110)
         at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind(AbstractBindingTypeDef.java:87)
         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.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:129)
         at org.seasar.struts.pojo.PojoProcessAction.execute(PojoProcessAction.java:75)
         at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
         at org.seasar.struts.pojo.processor.commands.ExecuteActionAndClearPageValue.execute(ExecuteActionAndClearPageValue.java:41)
         at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
         at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
         at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
         at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
         at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
         at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.struts.filter.S2StrutsFilter.doFilter(S2StrutsFilter.java:58)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.struts.hotdeploy.filter.S2StrutsHotdeployFilter.doFilter(S2StrutsHotdeployFilter.java:51)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
         at java.lang.Thread.run(Thread.java:595)
     Caused by: java.lang.IllegalArgumentException
         at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
         at java.lang.reflect.Field.set(Field.java:656)
         at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:162)
         ... 54 more
     WARN  2009-01-22 15:35:22,968 [http-8090-Processor23] Exception from exceptionCommand 'servlet-exception'
     org.seasar.framework.exception.SIllegalArgumentException:
     [ESSR0094]IllegalArgumentExceptionがクラス(com.xxx.xx.xxxxx.cl.action.xxxCA.XX0101.XX0101LoginAction)の
         型(class com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto)のフィールド(loginUserInfoDto)に
         型(com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto$$EnhancedByS2AOP$$b495e)の値
           (com.xxx.xx.xxxxx.cl.dto.xxxCA.XX0101.XX0101LoginUserInfoDto$$EnhancedByS2AOP$$[E-MAIL ADDRESS DELETED])を設定するときに発生しました。
         対象のクラスは(com.xxx.xx.xxxxx.cl.action.xxxCA.XX0101.XX0101LoginAction$$EnhancedByS2AOP$$441b45)です。
         at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:167)
         at org.seasar.framework.container.assembler.AbstractBindingTypeDef.setValue(AbstractBindingTypeDef.java:346)
         at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindManual(AbstractBindingTypeDef.java:110)
         at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind(AbstractBindingTypeDef.java:87)
         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.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:129)
         at org.seasar.struts.pojo.PojoProcessAction.execute(PojoProcessAction.java:75)
         at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
         at org.seasar.struts.pojo.processor.commands.ExecuteActionAndClearPageValue.execute(ExecuteActionAndClearPageValue.java:41)
         at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
         at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
         at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
         at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
         at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
         at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.struts.filter.S2StrutsFilter.doFilter(S2StrutsFilter.java:58)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.struts.hotdeploy.filter.S2StrutsHotdeployFilter.doFilter(S2StrutsHotdeployFilter.java:51)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
         at java.lang.Thread.run(Thread.java:595)
     Caused by: java.lang.IllegalArgumentException
         at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
         at java.lang.reflect.Field.set(Field.java:656)
         at org.seasar.framework.util.FieldUtil.set(FieldUtil.java:162)
         ... 54 more


解決出来なかった場合、開発環境をCoolDeployにすることを考えています。

開発期間も厳しい状況で、かつS2に初心者も多いので、

どうしてもHotDeployで開発していきたいという要望が出ております。

ご回答宜しくお願い致します。



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