[Seasar-user:20938] Re: CoolDeploy時に発生した例外(InstantiationRuntimeException)について質問

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 8月 1日 (月) 20:02:25 JST


小林 (koichik) です.

> 抽象クラスのサービスを生成しようとして 例外が発生しているようにみうけられる
> 挙動がありました。

Seasar2 ではインタフェースや抽象クラスに AOP を適用することで、
インスタンス化できるようにするケースが多々あります。
そのため、抽象クラスであってもコンポーネントとして自動登録することが
できます。

Service の場合、デフォルトではインタフェースも抽象クラスもコンポーネント
として登録します。
もしそれらを除外したいのであれば、creator.dicon で

  <component class="org.seasar.framework.container.creator.ServiceCreator">
    <property name="enableInterface">false</property>
    <property name="enableAbstract">false</property>
  </component>

としてください。

なお、COOL deploy の場合はコンテナの初期化時に全てのコンポーネントの
自動登録と初期化を行うので、インスタンス化できないコンポーネントがあると
初期化の時点でエラーが発生します。
しかし、WARM deploy では必要になるまでコンポーネントの登録および初期化は
遅延されるので、設定に問題があっても表面化しないケースがあります。


Date: Mon, 1 Aug 2011 18:20:07 +0900
From: Okamoto Tohru <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20937] CoolDeploy時に発生した例外(InstantiationRuntimeException)について質問

> 岡元と申します。
> 
> お世話になります。
> 
> 先日、ServiceのインスタンスをSingletonで生成するための質問をしました。
> その節はありがとうございました。
> 
> その後、開発を WarmDeployですすめていたのですが、CoolDeployにしようとしたところ
> 抽象クラスのサービスを生成しようとして 例外が発生しているようにみうけられる
> 挙動がありました。
> 
> 環境は
> Seasar Container 2.4.44
> S2Wicket            1.4.17.1
> Wicket                1.4.17
> 
> 
> です。
> 認識に違いがあれば ご指摘いただけると幸いです
> また、回避策等アドバイスいただければ幸いです
> なお、WarmDeploy時には問題なく動作しておりました。
> 
> 少々長いですがスタックトレースです
> 
> 
> org.seasar.framework.exception.InstantiationRuntimeException:
> [ESSR0041] .AbstractXXXXXXXXXXXXSeriviceの作成に失敗しました。理由はjava.lang.InstantiationException
>         at org.seasar.framework.util.ConstructorUtil.newInstance(ConstructorUtil.java:59)
>         at org.seasar.framework.container.assembler.AbstractConstructorAssembler.assembleDefault(AbstractConstructorAssembler.java:115)
>         at org.seasar.framework.container.assembler.AutoConstructorAssembler.doAssemble(AutoConstructorAssembler.java:44)
>         at org.seasar.framework.container.assembler.AbstractConstructorAssembler.assemble(AbstractConstructorAssembler.java:55)
>         at org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:64)
>         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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user

--
{
  name: "Koichi Kobayashi",
  mail: "[E-MAIL ADDRESS DELETED]",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
 }



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