[Seasar-user:18085] 複数DB接続時、INSERTしたIDが取得できない

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2009年 7月 28日 (火) 11:30:11 JST


初めてメールさせていただきます。神崎と申します。

開発環境
 Eclpse3.2
 Seasar2.3.21
 S2Dao 1.0.45
 SQL Server 2005
 SQL JDBC DRIVER 2.0.1803.100

"SelectableDataSourceProxy"を利用して複数DBに接続することはできたのですが、
INSERT後のIDENTITY(自動採番)だけが取得できない場合があり、困っております。

UserDao.java
====================
    :
@S2Dao(bean = User.class)
public interface UserDao {

  int insert(User entity);

}
    :
====================

j2ee.dicon
====================
    :
<components namespace="j2ee">
  <include path="j2ee-ACompany.dicon"/>
  <include path="j2ee-BCompany.dicon"/>
  <include path="j2ee-CCompany.dicon"/>
  
  <component 
    name="dataSourceSelect"
    class="org.seasar.extension.component.impl.SelectableDataSourceProxy"/>
</components>
    :
====================

当初、各diconファイル(例:j2ee-ACompany.dicon)毎にtransactionManagerを
定義していたのですが、一番最初にincludeした"j2ee-ACompany.dicon"に定義
したDBにInsertした場合のみ、IDENTITYが返ってます。
しかしながら、j2ee-BCompany.dicon(二つ目以降)に定義したDBにInsertした際、
常にIDENTITY=0が返ってきます。

そこで、過去のML[Seasar-user:9898]を見てみるとtransactionManagerは一つで
良いと推測し、下記をj2ee.diconに下記を移動しました。

====================
  <component name="transactionManager"
    class="org.seasar.extension.jta.TransactionManagerImpl"/>
  <component name="requiredTx"
    class="org.seasar.extension.tx.RequiredInterceptor"/>
  <component name="requiresNewTx"
    class="org.seasar.extension.tx.RequiresNewInterceptor"/>
  <component name="mandatoryTx"
    class="org.seasar.extension.tx.MandatoryInterceptor"/>
  <component name="notSupportedTx"
    class="org.seasar.extension.tx.NotSupportedInterceptor"/>
====================

すると、下記のエラーが発生し、各DBへの接続もできず、行き詰っています。

====================
java.lang.NullPointerException
    at org.seasar.framework.util.TransactionManagerUtil.getTransaction(TransactionManagerUtil.java:35)
    at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.getTransaction(ConnectionPoolImpl.java:188)
    at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.checkOut(ConnectionPoolImpl.java:151)
    at org.seasar.extension.dbcp.impl.DataSourceImpl.getConnection(DataSourceImpl.java:46)
    at org.seasar.extension.component.impl.SelectableDataSourceProxy.getConnection(SelectableDataSourceProxy.java:118)
    at org.seasar.extension.jdbc.util.DataSourceUtil.getConnection(DataSourceUtil.java:36)
    at org.seasar.dao.impl.DaoMetaDataImpl.initialize(DaoMetaDataImpl.java:147)
    :
====================

大変恐縮ですが、問題点をご指摘いただけないでしょうか?
宜しくお願い致します。

--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/


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