[Seasar-user:10015] [teeda] バッチ処理のdiconファイル定義

松山 大樹 [E-MAIL ADDRESS DELETED]
2007年 8月 22日 (水) 11:24:31 JST


 松山です。

 teeda ベースのWebアプリケーションに、バッチ処理の機能を追加しようと
考えています。main() から実行されるのですが、ビジネスロジックなどは、
共通する部分が多いため、そのまま使用したいです。

 とりあえず、app.dicon をコピーして、teedaExtension.dicon を除いた
dicon ファイルを、

<components>
  <include path="convention.dicon"/>
  <include path="aop.dicon"/>
  <include path="app_aop.dicon"/>
  <include path="dao.dicon"/>
  <include path="dxo.dicon"/>
  <!-- 共通jarファイル用 -->
  <component class="org.seasar.framework.container.autoregister.JarComponentAutoRegister">
    <property name="jarFileNames">"HogeCommons"</property>
    <property name="instanceDef">@[E-MAIL ADDRESS DELETED]</property>
      <initMethod name="addClassPattern">
        <arg>"jp.co.hoge"</arg>
        <arg>".*Impl,.*Logic"</arg>
      </initMethod>
  </component>
</components>

 と作成し、

	SingletonS2ContainerFactory.setConfigPath("batch.dicon");
	SingletonS2ContainerFactory.init();
	S2Container container = SingletonS2ContainerFactory.getContainer();

 と呼び出しているのですが、init() の部分で例外になります。

Exception in thread "main" org.seasar.framework.beans.IllegalPropertyRuntimeException: [ESSR0059]クラス(org.seasar.framework.container.autoregister.JarComponentAutoRegister)のプロパティ(customizer)の設定に失敗しました。理由はorg.seasar.framework.container.TooManyRegistrationRuntimeException: [ESSR0045]interface org.seasar.framework.container.ComponentCustomizerに複数のコンポーネント(org.seasar.framework.container.customizer.AspectCustomizer, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.Custom
 izerChain)が登録されています
	at org.seasar.framework.container.assembler.AbstractBindingTypeDef.getValue(AbstractBindingTypeDef.java:284)
	at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindAuto(AbstractBindingTypeDef.java:223)

 とりあえず、JarComponentAutoRegister の記述を外してみると、

Exception in thread "main" java.lang.UnsupportedOperationException: createRequestComponentDeployer
	at org.seasar.framework.container.deployer.ComponentDeployerFactory$DefaultProvider.createRequestComponentDeployer(ComponentDeployerFactory.java:191)
	at org.seasar.framework.container.deployer.ComponentDeployerFactory.createRequestComponentDeployer(ComponentDeployerFactory.java:100)

 という例外になります。

 そもそも、このような場合、dicon ファイルの記述はどのように記述するのがいいのでしょう?


-- 
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステムインテグレートサービスDept.
:::  Webソリューション開発Unit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]




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