[Seasar-user:21588] Action実装構成の質問

Funa [E-MAIL ADDRESS DELETED]
2013年 4月 3日 (水) 14:04:39 JST


こんにちは。

Actionの実装構成について質問があります。
現在、Ajax用のActionと画面遷移(Submitを介した)のActionを分けたActionクラ
ス構成にしています。

操作性を良くする為、データの取得・更新系は全てAjax実装です。

そこで、常に起きている訳ではなく、画面をしばらく放置してAjax通信を行うと
以下のExceptionが良く出ます。
ただ、同じ動作は繰り返すと再び正常に動きます。



2013/04/03 13:34:27 org.apache.catalina.core.ApplicationDispatcher invoke
致命的: サーブレット action のServlet.service()が例外を投げました
org.seasar.framework.beans.IllegalPropertyRuntimeException: [ESSR0059]ク
ラス(app.action.ajax.AmntAction$$EnhancedByS2AOP$$a0847)のプロパティ
(mngUserService)の設定に失敗しました。理由は
org.seasar.framework.exception.SIllegalArgumentException:
[ESSR0094]IllegalArgumentExceptionがクラス(app.service.MngUserService)
[org.seasar.framework.container.hotdeploy.HotdeployClassLoader @ ddab20]
の型(app.service.LoginTblService)
[org.seasar.framework.container.hotdeploy.HotdeployClassLoader @ ddab20]
のフィールド(loginTblService)に型
(app.service.LoginTblService$$EnhancedByS2AOP$$1421ab0)[WebappClassLoader
context: /ec-sample
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader @ 5dcec6
]の値(app.service.LoginTblService$$EnhancedByS2AOP$$1421ab0 @ d6f628)を設
定 するときに発生しました。対象のクラスは
(app.service.MngUserService$$EnhancedByS2AOP$$9d963f)
[org.seasar.framework.container.hotdeploy.HotdeployClassLoader @ ddab20]
です。
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.getValue(AbstractBindingTypeDef.java:297)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindAuto(AbstractBindingTypeDef.java:149)
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.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:86)
at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:99)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:99)
at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.seasar.framework.exception.SIllegalArgumentException:
[ESSR0094]IllegalArgumentExceptionがクラス(app.service.MngUserService)
[org.seasar.framework.container.hotdeploy.HotdeployClassLoader @ ddab20]
の型(app.service.LoginTblService)
[org.seasar.framework.container.hotdeploy.HotdeployClassLoader @ ddab20]
のフィールド(loginTblService)に型
(app.service.LoginTblService$$EnhancedByS2AOP$$1421ab0)[WebappClassLoader
context: /ec-sample
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:


これはAction構成の問題でしょうか?
と言うのも同じActionクラスに複数のService層を配置しています。
本来、他の画面で使われるexecuteのメソッドも同じクラスに置いています。

複数の使わないテーブルのDBコネクションを保持したこういう構成は
パフォーマンス面でもあまり良く無いのでしょうか?

初歩的な質問で申し訳ありませんが、
お聞かせいただければ幸いです。

public class AmntAction extends ActionBase {

@Resource
protected SoshikiMstService soshikiMstService;

@Resource
protected CategoryMstService categoryMstService;

@Resource
protected UserMstService userMstService;

@Resource
protected LoginTblService loginTblService ;


// ///////////////////////////////////////////////

@Execute(validator = false)
public String userSearch() throws IOException {
//userMstServiceを使ったユーザ管理画面用
}

@Execute(validator = false)
public String userUpdate() throws IOException {
//userMstServiceを使ったユーザ管理画面用
}

@Execute(validator = false)
public String userDelete() throws IOException {
//userMstServiceを使ったユーザ管理画面用
}

// ///////////////////////////////////////////////

@Execute(validator = false)
public String soshikiSearch() throws IOException {
//soshikiMstServiceを使った組織管理画面用
}

@Execute(validator = false)
public String soshikiUpdate() throws IOException {
  //soshikiMstServiceを使った組織管理画面用
}

@Execute(validator = false)
public String soshikiDelete() throws IOException {
  //soshikiMstServiceを使った組織管理画面用
}

  ※他も同等の構成で続く。
}

-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20130403/2688f50a/attachment.html>


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