- PR -

DataSource取得時のエラーについて

1
投稿者投稿内容
ふかまち
会議室デビュー日: 2001/08/06
投稿数: 9
お住まい・勤務地: 芭蕉 結びの地
投稿日時: 2003-03-04 14:18
はじめまして。

現在、理解できないエラーが発生しています。
皆様のお知恵を拝借できませんでしょうか。

環境
OS:Windows2000
アプリケーションサーバ:j2sdkee1.3
データベースサーバ:MSSQL2000(使用データベース2種類A,Bとします)
JDBCドライバー:sun.jdbc.odbc.JdbcOdbcDriver


セッションビーンでDataSourceよりgetConnection()しようとする
ところで、以下のエラーが発生します。

----------------------------------------------------
Couldn't delete old app jar : D:\j2sdkee1.3.1\repository\Fz001769\applications\BCManageAppEJB1046707331847Server.jar
java.lang.IllegalStateException: Local transaction already has 1 non-XA Resource: cannot add more resources
at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.enlistResource(J2EETransactionManagerOpt.java:80)
at com.sun.enterprise.resource.PoolManagerImpl.registerResource(PoolManagerImpl.java:147)
at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:128)
at com.sun.enterprise.resource.JdbcDataSource.internalGetConnection(JdbcDataSource.java:137)
at com.sun.enterprise.resource.JdbcDataSource.getConnection(JdbcDataSource.java:74)
----------------------------------------------------

以前までは、データベースを1つ(A)しか使用していませんでしたが、
今回あるテーブルを違うデータベース(B)に移動し、A,B2つの
データベースを使用するようにしたところ、上記のエラーが発生
するようになりました。

エラーメッセージをそのまま解釈しますと、
「トランザクションはすでにnon-XAのコネクションを1つ持っているので
 これ以上追加できません」
というようなエラーなんだろうと思いますが、その真意が理解できません。
なにが原因でこのようなエラーが発生するのかご存知の方がいらっしゃいましたら
どうぞ教えていただけないでしょうか。

文章に不明な点があるかもしれませんが、よろしくお願いします。
m.hosoi
会議室デビュー日: 2002/10/10
投稿数: 13
お住まい・勤務地: 東京
投稿日時: 2003-03-05 13:06
>「トランザクションはすでにnon-XAのコネクションを1つ持っているので
> これ以上追加できません」
とのことですが、
DBを複数使う場合は分散トランザクションを使うので、
XAコネクションが必要です。

"sun.jdbc.odbc.JdbcOdbcDriver"
にXAの機能があるかも調べる必要があります。
もし対応していないのなら、
MSSQLServerようのJDBCドライバも存在するのでそちらも試す価値あります。

分散トランザクションはいろいろたいへんなので、特に大きな事情がなければ
1つのDBで済ませたほうが無難です。


ふかまち
会議室デビュー日: 2001/08/06
投稿数: 9
お住まい・勤務地: 芭蕉 結びの地
投稿日時: 2003-03-06 12:15
返答が遅くなりまして、すみません。

J2EEのページをよく読んでみましたら、ご指摘の内容が
書かれていました。
J2EEはXA以外のコネクションに対してローカルトランザクション
という方式を取るようで、その場合は複数のデータベースに
アクセスすることはできないようです。

そこでMSSqlServer用のドライバをダウンロードしてきまして
XAドライバの設定に挑戦してみたのですが、
まだうまく認識してくれないようです。
いろいろと試してみようと思います。

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

スキルアップ/キャリアアップ(JOB@IT)