- - PR -
DataSource取得時のエラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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つ持っているので これ以上追加できません」 というようなエラーなんだろうと思いますが、その真意が理解できません。 なにが原因でこのようなエラーが発生するのかご存知の方がいらっしゃいましたら どうぞ教えていただけないでしょうか。 文章に不明な点があるかもしれませんが、よろしくお願いします。 |
|
投稿日時: 2003-03-05 13:06
>「トランザクションはすでにnon-XAのコネクションを1つ持っているので
> これ以上追加できません」 とのことですが、 DBを複数使う場合は分散トランザクションを使うので、 XAコネクションが必要です。 "sun.jdbc.odbc.JdbcOdbcDriver" にXAの機能があるかも調べる必要があります。 もし対応していないのなら、 MSSQLServerようのJDBCドライバも存在するのでそちらも試す価値あります。 分散トランザクションはいろいろたいへんなので、特に大きな事情がなければ 1つのDBで済ませたほうが無難です。 |
|
投稿日時: 2003-03-06 12:15
返答が遅くなりまして、すみません。
J2EEのページをよく読んでみましたら、ご指摘の内容が 書かれていました。 J2EEはXA以外のコネクションに対してローカルトランザクション という方式を取るようで、その場合は複数のデータベースに アクセスすることはできないようです。 そこでMSSqlServer用のドライバをダウンロードしてきまして XAドライバの設定に挑戦してみたのですが、 まだうまく認識してくれないようです。 いろいろと試してみようと思います。 ありがとうございました。 |
1