[Seasar-user:21050] Re: HOTdeploy が出来ない(非参照クラスから…が表示される)
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2011年 10月 7日 (金) 15:37:27 JST
小林 (koichik) です.
HOT deploy を含む SMART deploy は、規約に従ってコンポーネントを
自動登録します。そのため、AutoRegister による明示的な登録は
不要です。
そして HOT deploy が HOT に扱えるのは、規約に従って自動登録された
コンポーネントだけです。AutoRegister によって明示的に登録された
コンポーネントは非対象なので、
> HOT deploy対象クラス(com.aiueo.action.impl.loginActionImpl)が非対象クラスから参照されて通常のクラスローダーにロードされています。
となります。
独自.dicon を削除して、インターセプタの登録などは customizer.dicon で
行うようにしてください。
Date: Fri, 07 Oct 2011 11:28:51 +0900
From: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:21048] HOTdeploy が出来ない(非参照クラスから…が表示される)
> こんにちは。
> 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 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 メーリングリストの案内