[Seasar-user:20943] CoolDeploy 時の DI が失敗([ESSR0007]S2Containerはnullあるいは空であってはいけません) するのでアドバイスねがいます
Okamoto Tohru
[E-MAIL ADDRESS DELETED]
2011年 8月 2日 (火) 13:47:05 JST
先日も質問いたしました 岡元です。
度々の質問で恐縮ですが、 CoolDeploy時に DIするところで例外が発生しております。
回避策やあるべき姿等アドバイスいただければ ありがたいです。
また、デフォルトで Serviceをprototypeで登録する理由についてもうかがえれば 、私の勉強になりますので
こちらも おしめしいただければと思います。
環境は以下のとおりです
Seasar Container 2.4.44
S2JDBC 2.4.44
S2Wicket 1.4.17.1
Wicket 1.4.17
現象)
現在 S2JDBCの S2AbstractService を継承したサービスクラスと それを利用したサービスクラスを作成しております
具体的には 下記のパッケージ構成となっています。
A) xxxxxxxxx.service Bを利用するサービス (複数 の tableサービスを利用するためDIの設定をしている)
B) xxxxxxxxx.service.table テーブルに対応するS2AbstractServiceの継承クラス
また、 サービスをSingltonで利用したいと考えておりますため、以前ご教授いただいた設定を creator.diconにしております
この状態で、 CoolDeploy時に初期化処理で、 Aのサービスを生成する際に 表題および下記スタックトレースに
ある例外が発生しております。
私なりに 調査した内容としては、
1) http://www.seasar.org/wiki/index.php?FAQ%2FS2Container の
instance属性でrequestを設定するとnullでエラーになる。
という指摘事項と
2) creator.diconの設定を標準にして ためしたところ、 問題がなくなったことがあります。
これらより、上記でBに設定した サービス群がおそらく prototype か何かで登録されているのだろうと推測しております。
なお、サービスを Singltonにしようとしている理由は のちのち DBの内容を メモリ上にキャッシュすることを
考えているためです。
以下がスタックトレースです。
2011-08-02 12:05:09.707:WARN::failed wicket.XXXXXXXXXX:
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス(xxxxxxxxxxxxxx.service.TablenameService)のプロパティ(tablenameService)の設定に失敗しました。理由はorg.seasar.framework.exception.InvocationTargetRuntimeException:
[ESSR0043]xxxxxxxxxxxxxx.service.table.TablenameServiceが呼び出した対象が不正です。理由はorg.seasar.framework.exception.EmptyRuntimeException:
[ESSR0007]S2Containerはnullあるいは空であってはいけません
2011-08-02 12:05:09.708:WARN::Failed startup of context
[E-MAIL ADDRESS DELETED]{/XXXXXXXXX,,/home/user/source/src/main/webapp}
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス(xxxxxxxxxxxxxx.service.TablenameService)のプロパティ(tablenameService)の設定に失敗しました。理由はorg.seasar.framework.exception.InvocationTargetRuntimeException:
[ESSR0043]xxxxxxxxxxxxxx.service.table.TablenameServiceが呼び出した対象が不正です。理由はorg.seasar.framework.exception.EmptyRuntimeException:
[ESSR0007]S2Containerはnullあるいは空であってはいけません
at org.seasar.framework.container.assembler.AbstractBindingTypeDef.getValue(AbstractBindingTypeDef.java:297)
at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindAuto(AbstractBindingTypeDef.java:202)
at org.seasar.framework.container.assembler.BindingTypeShouldDef.doBind(BindingTypeShouldDef.java:58)
at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind(AbstractBindingTypeDef.java:78)
at org.seasar.framework.container.assembler.AutoPropertyAssembler.assemble(AutoPropertyAssembler.java:68)
at org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:68)
at org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
at org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
at org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
at org.seasar.wicket.S2WicketFilter.init(S2WicketFilter.java:186)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:115)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132)
at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:454)
at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:396)
at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210)
at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
外出がつづくため、お返事がおそくなるかもしれませんが、よろしくおねがします。
--
------------------------------------------------------
Tohru Okamoto [E-MAIL ADDRESS DELETED]
-------------------------------------------------------
Seasar-user メーリングリストの案内