[Seasar-user:21777] Re: 2つのDB接続方法について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2013年 12月 26日 (木) 17:54:54 JST


中村様

ご回答ありがとうございます。

> それぞれ別のServiceにするとわかりやすいかもしれません。
これは、私の提示したソースを2クラスに分けると言う事で理解できました。


> その上で、それぞれのJdbcManagerが利用するデータソースについては、
> SelectableDataSourceProxyを使ってユーザーごとに切り替えるのがいいと思います。
私の知識不足のせいか、サンプルコードを元に作成したのですが、処理が呼び出されていません。
interceptor のdicon設定方法をもう一度見直してみます。
S2Daoのcustomizer は簡単だったのに…

ご指摘ありがとうございました。


2013/12/26 (Thu) 13:20, "Toshihiro Nakamura" <toshihiro.nakamura @ gmail.com> wrote:
> 中村(taedium)です。
> 
> 検索用と更新用のJdbcManagerは、
> 次のURLで示されているような方法で
> それぞれ別のServiceにするとわかりやすいかもしれません。
> 
> http://s2container.seasar.org/2.4/ja/s2jdbc_service.html#複数のデータソース
> 
> その上で、それぞれのJdbcManagerが利用するデータソースについては、
> SelectableDataSourceProxyを使ってユーザーごとに切り替えるのがいいと思います。
> SelectableDataSourceProxyについては以下のURLに記載があります。
> 
> http://s2container.seasar.org/2.4/ja/jdbc.html#DataSourceDynamicSwiching
> 
> > 1.useXXXメソッドで、「S2AbstractService.jdbcManager」 へ元DB、承認DBを設定しておりますが、
> > 更新ユーザーと承認ユーザーの処理が同時に動いた場合、正しく動作するのでしょうか。
> 
> Serviceを共有していなければ(prototypeなら)、スレッドの競合に関する
> 問題は特にないと思います。
> 
> 
> 2013年12月25日 17:38  <pianyi @ mail.goo.ne.jp>:
> > いつもお世話になっております。
> > pianyiと申します。
> >
> > 現在下記のような処理の流れで、2つのDB接続を行おうWebシステムを考えております。
> >
> > 大まかなシステム全体の流れは下記になります。
> > ・更新ユーザーと、承認ユーザーがいます。
> > ・更新ユーザーは、元データベースから検索を行い、承認データベースへInsert(Update)を行います。
> > ・承認ユーザーは、承認データベースから検索を行い、承認データベースへUpdateを行います。
> > ・夜間バッチは、承認データベースから、元データベースへInsert(Update)を行います。
> >
> >
> > これを実現するため、下記のようなabstractクラスを作成しました。
> > 各サービスクラスは、abstractを継承して実装するようにルール化しています。
> > 下記実装方法について疑問がありますので、よろしくお願いします。
> >
> > 1.useXXXメソッドで、「S2AbstractService.jdbcManager」 へ元DB、承認DBを設定しておりますが、
> > 更新ユーザーと承認ユーザーの処理が同時に動いた場合、正しく動作するのでしょうか。
> >
> > 2.「S2AbstractService.jdbcManager」 に直接参照されないようにするため、
> > 「protected JdbcManager jdbcManager;」を追加しましたが、他に良い方法がありましたら教えて頂けないでしょうか。
> >
> > 3.下記のような実装では無く、推奨なやり方があれば教えて下さい。
> >   (S2Daoの場合はパッケージ名を元にインターセプターで切り分ける方法が見つかったのですが、
> >    S2JDBCはインターセプターが使えないので、出来ないと思っています)
> >
> > 以上、ご教授願います。
> >
> > ---------------------- ここから ----------------------
> > public abstract class AbstractJdbcService<T> extends S2AbstractService<T> {
> >     /** 親クラスの変数を隠蔽する */
> >     protected JdbcManager jdbcManager;
> >     private JdbcManager updateJdbcManager;
> >     private JdbcManager searchJdbcManager;
> >     public void setUpdateJdbcManager(JdbcManager jdbcManager) {
> >         this.updateJdbcManager = jdbcManager;
> >     }
> >     public void setSearchJdbcManager(JdbcManager jdbcManager) {
> >         this.searchJdbcManager = jdbcManager;
> >     }
> >
> >     public JdbcManager getUpdateJdbcManager() {
> >         super.jdbcManager = this.updateJdbcManager;
> >         return this.updateJdbcManager;
> >     }
> >     public JdbcManager getSearchJdbcManager() {
> >         super.jdbcManager = this.searchJdbcManager;
> >         return this.searchJdbcManager;
> >     }
> >
> >     public void useUpdate(){
> >         super.jdbcManager = this.updateJdbcManager;
> >     }
> >     public void useSearch(){
> >         super.jdbcManager = this.searchJdbcManager;
> >     }
> > }
> > ---------------------- ここまで ----------------------
> >
> >
> > 環境:
> > Seasar2 2.4.47
> > sa-struts-1.0.4-sp9
> > S2JDBC
> > _______________________________________________
> > Seasar-user mailing list
> > Seasar-user @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> 
> 
> -- 
> Toshihiro Nakamura
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


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