S2JSFサンプルのHotDeploy対応

いよいよs2-jsf-example-1.1.1を拡張して色々試すかーって思ったけど、このサンプルHotDeploy対応されてないのでまずこれに対応。

  • まずweb.xmlにhotdeployの定義を追加
    
        hotdeployfilter
        org.seasar.framework.container.hotdeploy.HotdeployFilter
    
    
        hotdeployfilter
        /*
    
  • 次にS2.4.7をダウンロードしてそこから以下のファイルをコピー。
    • s2container.dicon
    • customizer.dicon
    • creator.dicon
    • convention.dicon
    • env.txt

convention.diconはサンプルのルートパッケージを指定するよう変更。
convention.dicon

<components>
	<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
		<initMethod name="addRootPackageName">
			<arg>"examples.jsf"</arg>
		</initMethod>
	</component>
</components>

以上。まずCoolDeployで確認。が、Tomcat起動後即エラー。

ERROR 2007-01-07 01:44:01,609 [main] [ESSR0059]クラス(examples.jsf.logic.impl.EmployeeLogicImpl$$EnhancedByS2AOP$$c260c5)のプロパティ
(employeeDtoDao)の設定に失敗しました。理由はorg.seasar.framework.container.TooManyRegistrationRuntimeException: [ESSR0045]
employeeDtoDaoに複数のコンポーネント(examples.jsf.dao.EmployeeDtoDao, examples.jsf.dao.EmployeeDtoDao)が登録されています
・・・・・・・・・・・・

TooManyRegistrationRuntimeExceptionをヒントに色々調べてみると、元々app.diconに定義されていた自動登録設定がSMART deployの自動登録設定と被ってしまったようだ。でapp.diconの該当箇所をごっそり削除。AOPの設定はcustomizer.diconで定義するようなので修正するが、これが全くうまくいかず手詰まり。
customizer.dicon


	
		traceCustomizer
	
	
		s2DaoCustomizer
	


    "j2ee.requiredTx"

とりあえずdaoとlogicクラスの設定をしてみたがエラー。。

Caused by: org.seasar.framework.beans.IllegalPropertyRuntimeException: [ESSR0059]クラス
(org.seasar.framework.container.creator.ConnectorCreator)のプロパティ(connectorCustomizer)の設定に失敗しました。
理由はorg.seasar.framework.container.TooManyRegistrationRuntimeException: [ESSR0045]interface 
org.seasar.framework.container.ComponentCustomizerに複数のコンポーネント
(org.seasar.framework.container.customizer.CustomizerChain, org.seasar.framework.container.customizer.AspectCustomizer)
が登録されています

daoかlogicどっちか片方の設定をコメントアウトすればうまく動く。。。うーん、よくわからん。また明日。


[追記]
id:koichikさんのご指摘を反映すればうまくいきました。ありがとうございました。