[Seasar-user:17629] Re: DBFluteのHotDeploy(複数DB)について

kubo [E-MAIL ADDRESS DELETED]
2009年 6月 5日 (金) 16:11:39 JST


久保(jflute)です。

松原さん、こんにちは

下記の件ですが、一言で言うと、
DBFluteのHotDeploy機能が複数DBに対応してない
という感じですね。
ただ、申し訳ありませんが、このcreatorの仕組みの中で
パッとどうやれば良いか自分も分かりかねます。

要は、一つのcreatorで自動登録された
FooBhvとBarBhvがいたとして、
FooBhvにはdbflute-foo.diconのコンポーネントを、
BarBhvにはdbflute-bar.diconのコンポーネントをDIする
方法という話になると思いますので、
まずはそのやり方を探るのが良いと思います。
(S2Container-2.4としてどのようにやるのか)
もし、できないようであれば(DBFluteの)HotDeployは捨てて、
通常のDBFluteのやり方でやることをお奨めします。

ちなみにDBFluteのHotDeploy関連のテンプレートは、
templates/om/java/allcommon/container/seasar/hotdeploy
配下にありますので、試される場合はこちらを直接修正して
やるとよいです。

別件に関してですが、
上記の件次第で変わるかもしれませんが、
とりあえず現状としては片方採用でOKです(違いがないので)。
また、お使いのDBFluteのバージョンではS2Daoに依存して
いませんので、そもそもs2DaoCustomizerが不要ですね。
お手数ですが、
CustomizeDicon.vmの「s2DaoCustomizer」と「daoCustomizer」
CreatorDicon.vmの「DaoCreator」の定義を削除して
お試し下さい。
問題ないなら、そのまま削除したままでOKです。
(DBFlute本体もそのように削除致します。)




2009/6/5  <[E-MAIL ADDRESS DELETED]>:
>
> お世話になっております.松原です.
>
>
> 掲題の件、既知の内容であれば申し訳ございませんが,
> 以下の環境で,複数DBを対象にDBFluteのHotDeploy機能
> を使用した場合,正常に対象DBにアクセスできない問題
> が発生しております.
>
> <環境>
> Java   :JRE 1.6.0_13
> DBFlute:DBFlute 0.94
> DB     :Oracle 10.2.0.1.0
>         Schema :XXX(仮)
>                    YYY(仮)
>
> <現象>
> DBFluteを以下の設定で生成した結果,DBアクセスを実行
> すると,片方のSchema(XXX)のテーブルには正常にDDLが
> 発行されていますが,もう片方(YYY)のテーブルにDDLを
> 発行すると、SSQLException(ORA-00942)となり,XXXの方
> にアクセスしてしまいます.
>
> <設定内容>
> ■build.properties(XXX)の設定から
> torque.packageBase = aaa.bbb.dbflute.xxx
> torque.extendedBehaviorPackage = bhv
> torque.extendedDaoPackage = dao
> torque.isAvailableHotDeploy = true
>
> ■build.properties(YYY)の設定から
> torque.packageBase = aaa.bbb.dbflute.yyy
> torque.extendedBehaviorPackage = bhv
> torque.extendedDaoPackage = dao
> torque.isAvailableHotDeploy = true
>
> ■convention.diconの定義から
> <!-- dbflute xxx -->
> <initMethod name="addRootPackageName">
> <arg>"aaa.bbb.dbflute.xxx"</arg>
> </initMethod>
> <initMethod name="addIgnorePackageName">
> <arg>"aaa.bbb.dbflute.xxx.allcommon"</arg>
> </initMethod>
>
> <!-- dbflute yyy -->
> <initMethod name="addRootPackageName">
> <arg>"aaa.bbb.dbflute.yyy"</arg>
> </initMethod>
> <initMethod name="addIgnorePackageName">
> <arg>"aaa.bbb.dbflute.yyy.allcommon"</arg>
> </initMethod>
>
> <こちらで調査した結果>
> 各BehaviorのComponentが参照しているjdbc.diconは,dbflute.dicon
> に生成されるべきComponents定義から判定を行っているように思えます.
> 仮に上記設定のまま、dbflute.diconにBehavior定義を行ったところ正常
> に各DBへアクセスを行うことができました.
>
> 但し,折角isAvailableHotDeploy をtrueとし、dbflute.diconからComponents
> 定義を外し,SMART deploy定義のconvention.diconを有効にしていることに対し,
> dbflute.diconにComponents定義をしてしまうとconvention.diconの定義と重複
> した設定になってしまいます.
> 正しい設定方法をご教示頂けないでしょうか?
>
> <別件>
> また、別件となり申し訳ございませんが、isAvailableHotDeploy をtrueで生成
> するとdbflute-creator.docn及びdbflute-customizer.diconが生成されると認識
> しております.
> 複数DBを対象に生成した場合,どちらの定義も有効とする必要があるのでしょうか?
> 気になった理由は、
> ①両方の定義を生かすとdbflute-customizer.diconの"s2DaoCustomizer"
> (interceptorName名違い)の定義が重複してしまう.
>
>      <component name="s2DaoCustomizer" class="org.seasar.framework.container.customizer.AspectCustomizer">
>          <property name="interceptorName">"dbflute-xxx.interceptor"</property>
>      </component>
>
> ②片方(XXX)のみのdbflute-customizer.dicon及びdbflute-creator.docnを採用して
> 動作させたところ、一応正常動作しているように思えます.
> 但し、以下の定義がなくとも問題ないか判断できませんでした.
>
> ■YYYのdbflute-customizer.diconから
>        <component name="s2DaoCustomizer" class="org.seasar.framework.container.customizer.AspectCustomizer">
>            <property name="interceptorName">"dbflute-yyy.interceptor"</property>
>        </component>
> ■YYYのdbflute-creator.docnから
>        <component class="aaa.bbb.dbflute.yyy.allcommon.s2container.BehaviorCreator"/>
>
> 長文になり,大変申し訳ございませんが,ご確認の程,
> 宜しくお願い致します.
>
> 以上.
>
>
>
>
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


Seasar-user メーリングリストの案内