[Seasar-user:18481] Re: [Ymir][DBFlute] Ymir + DBFluteで複数DBの使用
金子 雄一
[E-MAIL ADDRESS DELETED]
2009年 9月 10日 (木) 20:52:54 JST
金子です。
更新も試してみました。
正常終了の場合 ⇒ 全DBに対して、コミット
例外発生の場合 ⇒ 全DBに対して、ロールバック
となりました。
ですので、複数DBに対して、
一括でコミット・ロールバックがかかっていると考えて、
問題ないと思います。
今までの流れをまとめますね。
1.クラスパス上に(Eclipseならば、src/resources直下です。)、
ymir-dao.diconを作成する。
2.アクセスする分だけのdbflute-xxx.diconをIncludeする。
ymir-dao.diconのcomponentsのネームスペースは、
ほかのものと同一でなければ、任意のものでOK。
(今回はdaoとしました。dbfluteでもOKなはずです。
わかりやすい名前にしましょう。)
3.クラスパス上に、ymir-customizer+pageCustomizer.diconを作成する。
4.pageCustomizer部分を複数DB対応にする。
(requiredTx周りの設定を複数DB用にします。)
以下のような記述になります。
------------------------------------------------------------------
<components>
<component name="pageCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>
<component
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"j2eexxxdb.requiredTx"</property>
<property name="pointcut">"_get.*,_post.*"</property>
</component>
</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>
<component
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"j2eeyyydb.requiredTx"</property>
<property name="pointcut">"_get.*,_post.*"</property>
</component>
</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>
<component
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"j2eezzzdb.requiredTx"</property>
<property name="pointcut">"_get.*,_post.*"</property>
</component>
</arg>
</initMethod>
</component>
</components>
----------------------------------------------------------------------
ここまでの設定で、複数DB対応になります。
pointcutの部分は、プロジェクトの特性に合わせて、
カスタマイズしてください。
(_prerenderの追加はしたほうがよさそうな気はします。)
以上、よろしくお願いします。
金子 雄一 さんは書きました:
> 金子です。
>
> さらに、試してみましたので、回答いたします。
> > この方法で、どちらのDBに対してもDBアクセスができて、
> どのDBにも、Selectですが、アクセスできました。
>
> > トランザクションも発行出来たって感じでしょうか?
> ログを確認する限りは、問題なさそうです。
>
> 【正常終了時の場合】
> 2009/09/10 20:22:18:990 - 【DEBUG】【クラス名】
> org.seasar.extension.jta.TransactionImpl 【メソッド名】log --- トランザ
> クションをコミットしました。tx=[FormatId=4360, GlobalId=1252581713442/0,
> BranchId=]
>
>
> 【例外を発生させた場合】
> (今回は、無理やりRuntimeExceptionを発生させました。)
>
> 2009/09/10 20:23:05:647 - 【DEBUG】【クラス名】
> org.seasar.extension.jta.TransactionImpl 【メソッド名】log --- トランザ
> クションをロールバックしました。tx=[FormatId=4360,
> GlobalId=1252581713442/1, BranchId=]
>
>
> Teeda + DBFluteの複数DBのときとログの出方は、まったく同じです。
> 更新で試さないと、最終確認には、ならないですが、
> 今のところ、問題ないのではなかろうかと思います。
> (更新も、これから試してみます。)
>
>
> 以上、よろしくお願いします。
>
>
> kubo さんは書きました:
>> 久保(jflute)です。
>>
>> ちょっと興味本位ですが、
>> この方法で、どちらのDBに対してもDBアクセスができて、
>> トランザクションも発行出来たって感じでしょうか?
>> (簡単な検索で良いので)
>>
>> #
>> # 情報共有としての貴重なスレッドになるので、
>> # 最後丁寧にまとまるといいかなと思いまして。
>> #
>>
>> 2009/9/10 金子 雄一 <[E-MAIL ADDRESS DELETED]>:
>>> 金子です。
>>>
>>> ご回答ありがとうございます。
>>>
>>>> 全部置き換えてしまうと、バージョンアップなどでdiconの内容が変わった際に
>>>> 追従するのが大変ですので、コンポーネント単位の除去・定義の追加が好ま
>>>> しい
>>>> と思います。
>>> 了解いたしました。
>>>
>>>> はい。また、ymir-customizer.diconをまるごと置き換えるのではなく、
>>>> ymir-customizer+pageCustomizer.diconを作ってPageCustomizerを差し替える
>>>> やり方をすればより良いかと思います。
>>> この方法にて、試してみました。
>>> 挙動自体、変わることはありませんでしたので、
>>> こちらの方法で行こうかと思います。
>>>
>>>
>>> ※ページクラスの自動生成もそうですが、
>>> 継続的に生成可能なのが、秀逸ですね。
>>> まだまだ、いろいろと試していこうかと思います。
>>>
>>>
>>> 以上、よろしくお願いします。
>>>
>>>
>>> YOKOTA Takehiko さんは書きました:
>>>> 横田です。
>>>>
>>>> 金子さん、こんにちは。回答が遅くなってすみませんでした。
>>>>
>>>> Ymir関連のdiconの一覧や包含関係についてはドキュメントがないので、近日
>>>> 中に作成します。ご不便をおかけしてすみません。
>>>>
>>>>> 今回は、クラスパス上にymir-customizer.diconを新たに作成しました。
>>>> ちなみにymir-customizer+.diconというファイルをクラスパス上に置くと、
>>>> それ
>>>> がymir-customizer.diconよりも優先されるようになります。
>>>>
>>>> また、一部コンポーネント(pageCustomizer)だけを差し替えたければ、
>>>> クラスパス上に例えばymir-customizer+pageCustomizer.diconというファイ
>>>> ルを
>>>> 置いて、ファイルの内容を
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
>>>> "http://www.seasar.org/dtd/components24.dtd">
>>>> <components>
>>>> <component name="pageCustomizer"
>>>>
>>>> class="org.seasar.framework.container.customizer.CustomizerChain" />
>>>> </components>
>>>>
>>>> のようにすればOKです。
>>>>
>>>>> 内容を見ると、どうやら、このdiconがcustomizer.diconと同等の動作を
>>>>> しているように見えます。
>>>> はい、そのとおりです。
>>>>
>>>>> おそらく、Ymirの機能の一つである、
>>>>> コンポーネント除去・定義の追加でもできるかと思います。
>>>>> 実際は、どちらが好ましいのでしょうか?
>>>> 全部置き換えてしまうと、バージョンアップなどでdiconの内容が変わった際に
>>>> 追従するのが大変ですので、コンポーネント単位の除去・定義の追加が好ま
>>>> しい
>>>> と思います。
>>>>
>>>> コンポーネント単位の除去・定義の追加の詳細については
>>>>
>>>> http://ymir.seasar.org/docs/1.0.x/ref/dicon
>>>>
>>>> を参照して下さい。
>>>>
>>>>> また、この手順で正しいでしょうか?
>>>> はい。また、ymir-customizer.diconをまるごと置き換えるのではなく、
>>>> ymir-customizer+pageCustomizer.diconを作ってPageCustomizerを差し替える
>>>> やり方をすればより良いかと思います。
>>>>
>>>
>>> --
>>> 金子 雄一 <[E-MAIL ADDRESS DELETED]>
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>
>
--
金子 雄一 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内