[Seasar-user:21048] HOTdeploy が出来ない(非参照クラスから…が表示される)
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2011年 10月 7日 (金) 11:28:51 JST
こんにちは。
pianyiと申します。
現在、S2Struts1.2 で作成したプロジェクトを、S2Struts1.3 に変更しています。
その際、HOTdeploy対応 が出来なく困っております。
ヒント、助言など頂ければと思います。
やった事:
1.S2StrutsBlank V1.3.1 を元に、Weblogic 対応のプロジェクトを作成。
2.開発元ソースを、S2Struts1.3 に反映。(S2StrutsExample V1.3.1 を参考にする)
3.S2Container などを、2.4.44 にバージョンアップ
4.Cooldeploy で動作する事を確認。
5.Javaファイル(ActionやService) を変更すると、エラーが発生している。 ← 今ここ
Web画面に表示されるエラー内容:
org.seasar.framework.exception.EmptyRuntimeException: [ESSR0007]S2Containerはnullあるいは空であってはいけません。
ログ出力内容:
HOT deploy対象クラス(com.aiueo.action.impl.loginActionImpl)が非対象クラスから参照されて通常のクラスローダーにロードされています。
※対象としている、全てのクラスがに対して、上記メッセージが表示されます。
diconファイル:(コピペ出来ないので、単語ミスなどあるかもしれません)
************************************************************************************
独自.dicon
<components namespace="aiueo">
<include path="com/aiueo/test.dao.dicon"/>
<include path="com/aiueo/test.s2struts.dicon"/>
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<property name="autoNaming">
<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming" />
</property>
<initMethod name="addClassPattern">
<arg>"com.aiueo.test"</arg>
<arg>".*ServiceImpl"</arg>
</initMethod>
</component>
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<property name="instanceDef">
@[E-MAIL ADDRESS DELETED]
</property>
<property name="autoNaming">
<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming" />
</property>
<initMethod name="addClassPattern">
<arg>"com.aiueo.test"</arg>
<arg>".*ActionImpl"</arg>
</initMethod>
</component>
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">
<component class="com.aiuto.core.ErrorInterceptor" />
</property>
<initMethod name="addClassPattern">
<arg>"com.aiueo.test"</arg>
<arg>".*ActionImpl"</arg>
</initMethod>
</component>
</components>
************************************************************************************
test.dao.dicon
<components namespace="aiueo.dao">
<include path="dao.dicon">
<component name="s2dao" class="org.seasar.dao.interceptors.S2DaoInterceptor">
</component>
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<property name="autoNaming">
<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming" />
</property>
<initMethod name="addClassPattern">
<arg>"com.aiueo.test.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">
dao.interceptor
</property>
<initMethod name="addClassPattern">
<arg>"com.aiueo.test.dao"</arg>
<arg>".*dao"</arg>
</initMethod>
</component>
</components>
************************************************************************************
test.s2struts.dicon (変更箇所のみ)
<component name="pojoProcessAction" class="com.aiueo.core.PojoProcessActionImpl">
<property name="defaultActionForward">
<component class="org.apache.struts.action.ActionForward">
</component>
<property>
<initMethod name="addPojoCommand">… // 下からある奴
<initMethod name="addPojoCommand">… // 下からある奴
<initMethod name="addPojoCommand">… // 下からある奴
</component>
************************************************************************************
その他:
・Actionクラスは、abstractクラスと、インターフェース を実装しています。
(インターフェースは、フォワード情報と、全メソッドを宣言)
(abstractクラスはPropertyファイルの取得など、リクエスト、レスポンス、セッション等制御)
分かった事:
・クラスを自動登録するために、diconファイルを作成したが、そのファイルを読み込むとエラーが出る。
(当たり前?)
・Action だけでなく、Serviceも(非対象クラスから…) が出ている為、
interceptor とは関係無いと思われる。
・サーバー再起動すれば正しく動作する。
・「HOT deployを開始します」 「HOT deployを終了します」ログは表示されている為、
HOT deploy機能は動いていると思っています。
大変申し訳ありませんが、お力添えの程よろしくお願い致します。
開発環境:
・Weblogic 11
・S2StrutsBlank V1.3.1
・S2Container 2.4.44
・S2Strut1.2 の 開発元ソース
Seasar-user メーリングリストの案内