[Seasar-user:17733] Re: [S2JDBC]JNDIで設定されたDataSourceを利用した場合の挙動

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 6月 12日 (金) 15:30:30 JST


小林 (koichik) です.

Date:    Fri, 12 Jun 2009 13:42:10 +0900
From:    IZUNO Tadashi <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17728] [S2JDBC]JNDIで設定されたDataSourceを利用した場合の挙動

> JNDIで設定されたDataSourceを利用した場合と、jdbc.diconで設定したDataSourceを利用する場合で挙動が異なるので教えてください。

Tomcat 側で設定した DataSource は JTA のことを
知らないので,そのままではトランザクション制御
されません.

> (データベース情報をサーバで設定したいのは、アプリケーションサーバ毎にデータベースが異なる為です。)

通常の (ConnectionPool 等が設定されている) jdbc.dicon に
定義されている XADataSourceImpl の代わりに
DataSourceXADataSource を使ってください.

<component
  class="org.seasar.extension.dbcp.impl.DataSourceXADataSource">
  <property name="dataSourceName">"java:comp/env/jdbc/test"</property>
</component>

DataSourceXADataSource を使うと,指定された名前で
JNDI ルックアップした DataSource からコネクションを
取得するようになります.

jdbc.dicon の DataSource -> ConnectionPool ->
  DataSourceXADataSource -> Tomcat の DataSource

という流れでコネクションが取得され,その際に JTA と
連携します.

この場合,ConnectionPoolImpl の maxPoolSize を 0 に
すると,Seasar2 側ではコネクションをプールしなく
なります.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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