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さんのご指摘を反映すればうまくいきました。ありがとうございました。