[Seasar-user:9083] Re: IPアドレスを渡しての動的なDB変更

大坪 淳一 [E-MAIL ADDRESS DELETED]
2007年 7月 10日 (火) 21:35:43 JST


小林(koichik)さん

ご返信ありがとうございます。大坪です。

> これらは同一トランザクションでのアクセスに
> なるのでしょうか?
> それとも独立したトランザクションですか?
独立したトランザクションです。
教えていただいた方法で動作を確認しました。ありがとうございます。

ただ物理的なコネクションを取得したり閉じたり忙しそうですね…。
毎回接続しているのでしょうがないのですが。

それで考えたのですが、
親のPCへのアクセスは、今まで通り初め(Webサーバ起動時)に作られたコンテナ
で行って動的なDB変更は行わず、それとは別にもう1つコンテナを作ってこちら
は今回教えていただいた方法を用いて動的にIPを変更して子のPCへアクセスさせ
たいと思います。
1つ目のコンテナはSingletonS2ContainerFactory.getContainer()で呼び出して
いますが、2つ目のコンテナを呼び出す方法はあるのでしょうか。

以上です、よろしくお願いします。

> 小林 (koichik) です.
> 
> Date:    Tue, 10 Jul 2007 18:20:12 +0900
> From:    大坪 淳一 <[E-MAIL ADDRESS DELETED]>
> To:       [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:9076] Re: IPアドレスを渡しての動的なDB変更
> 
> > ただ、
> > >   public void hoge() {
> > >     xaDataSource.setURL("jdbc:mysql://" + addr1 + ":3306/test");
> > >     dao.select();
> > >     xaDataSource.setURL("jdbc:mysql://" + addr2 + ":3306/test");
> > >     dao.select();
> > >   }
> > のようなことがしたいのですが、その場合はどうすれば良いでしょうか。
> 
> これらは同一トランザクションでのアクセスに
> なるのでしょうか?
> それとも独立したトランザクションですか?
> 
> 同一のトランザクションで,しかも本当に XA で
> 2 フェーズコミットが必要なら先の XADataSourceImpl は
> そもそも使えません.
> 
> 独立したトランザクションの場合はそれぞれの
> トランザクション境界を明確にして,そこに
> トランザクションのアスペクトを適用すれば
> よいかと.
> 例えば
> 
> public void foo() {
>   bar(addr1);
>   bar(addr2);
> }
> public void bar(String addr) {
>   xaDataSource.setURL("jdbc:mysql://" + addr + ":3306/test");
>   dao.select();
> }
> 
> foo() にはトランザクションを設定せず,bar() の方に
> 設定すれば,それぞれ指定のアドレスの DB に接続します.
> 
> > もう一つ、親のPCのIPアドレスをデフォルトで設定しておきたいのですがなにか
> > 良い方法はないでしょうか。
> 
> 親と子を区別してアクセスするならデータソースの
> 設定も個別にした方がいいように思いますが.
> 
> もし一つのデータソースで親も子もアクセスするなら,
> XADataSourceImpl に defaultURL のような
> プロパティを追加してそこに親 PC の URL を
> 設定し,getURL() メソッドはurl という
> スレッドローカルの値が null だったら
> defaultURL の値を返すようにすればいいかと.
> 
> その場合,子の方にアクセスした後は必ず
> 
>     xaDataSource.setURL(null);
> 
> のようにしないといけなくなり,何かと
> 問題を抱えやすい気のせいがするので,
> 親と子は別のデータソースにするか,親であれ
> 子であれ常に URL を明示的に設定する方が
> 無難だと思います.
> 
> 
> --
> <signature>
>    <name>Koichi Kobayashi</name>
>    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
> </signature>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user



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