トップ «前の日記(2006-08-20 (Sun)) 最新 次の日記(2006-08-22 (Tue))» 編集

ふたつの川うるおう日記


2006-08-21 (Mon)

_ [Java][Seasar] COOL deploy時のサブアプリケーションのコンポーネント名がまずいかも (解決)

[追記] これはS2StrutsQualifiedの問題でした。パッチ不要です。。

trunk/s2struts-example で org.seasar.struts.examples.employee.action.util.EmployeeSearchInit2Action があったとして、HOT deploy時とCOOL deploy時で動作するs2strutsのinitタグのアクションクラスのコンポーネント名が異なってしまうようです。

  • HOT deploy: <s2struts:init action="#{util_employeeSearchInit2Action.initialize}" />
  • COOL deploy: <s2struts:init action="#{employeeSearchInit2Action.initialize}" />

サブアプリケーションなので期待するのはHOT deploy時のコンポーネント名です。COOL deploy時でもHOT deployと同じコンポーネント名になってくれないとenv.txtで切り替えた時に動かないのでまずそうです。というわけで、S2Container(s2-framework-2.4.0-rc-1)のソースを見てみたら次のパッチを当てればとりあえず良いみたいです。

  • 適当なパッチ
    • コンポーネント名を必ずnamingConventionを使って決める
      • ConstantAnnotationHandlerにnamingConvention持たせても良いのかも
Index: E:/Java/Eclipse/Workspace/Seasar/seasar2/s2-framework/src/main/java/org/seasar/framework/container/cooldeploy/creator/AbstractCoolCreator.java
===================================================================
--- E:/Java/Eclipse/Workspace/Seasar/seasar2/s2-framework/src/main/java/org/seasar/framework/container/cooldeploy/creator/AbstractCoolCreator.java	(revision 1191)
+++ E:/Java/Eclipse/Workspace/Seasar/seasar2/s2-framework/src/main/java/org/seasar/framework/container/cooldeploy/creator/AbstractCoolCreator.java	(working copy)
@@ -119,9 +119,7 @@
                 .getAnnotationHandler();
         ComponentDef cd = handler.createComponentDef(targetClass, instanceDef,
                 autoBindingDef, externalBinding);
-        if (cd.getComponentName() == null) {
-            cd.setComponentName(composeComponentName(clazz.getName()));
-        }
+        cd.setComponentName(composeComponentName(clazz.getName()));
         handler.appendDI(cd);
         handler.appendAspect(cd);
         handler.appendInitMethod(cd);

でも、teeda-html-exampleはCOOL deployにしてもちゃんと動いてるので、これはS2Struts側でどうにかすべきものなのかな??

| Bookmark:

_ [Java][Seasar] S2StrutsQualified 0.7 beta 1 + COOL deploy

見事にCOOL deploy時に動かないわけだが(;´Д`)。試してなかった。。

| Bookmark:

_ [Java][Seasar] S2StrutsQualified 0.7 beta 2

というわけで、beta 2です。HOT/COOL deploy両方に対応し、サンプルアプリで同じソースで動くことを確認しました。

なお、一応QualifiedZeroConfigActionRuleImplを入れておきましたが、ZeroConfigActionRuleImplをs2struts.diconに設定した状態でも動いたので必要ないかもしれない。

また、S2Container 2.4のCoolComponentAutoRegisterとOndemandBehaviorに複数パッケージルートを設定出来る(素晴らしい!)ので、以前の怪しい正規表現っぽく書くpackageRuleは廃止しました。QualifiedRuleクラスでちょっと強引にCoolComponentAutoRegisterとOndemandBehaviorからパッケージルートを全部取得して処理します。これまたOndemandBehaviorは見る必要ないかもしれない。これも判らないのでとりあえず入れときました。

残るはJoSQLの問題。でも、この問題はどう対策すれば良いのかさっぱり思いつかない。。

ちなみに、HOT/COOL deploy対応したので、試してみたところJoSQL使っていてもCOOL deploy時はちゃんと動きました。HOT deploy時のみエラーが出るみたいです。

| Bookmark:
[]

| Return to page top | Vicuna CMS - WordPress Theme - Vicuna Ninja Style for tDiary |