0

Websphere スケジューラーは、スケジューラー データソース XA ドライバー を使用しています。タスクがスケジューラによって実行されると、グローバル トランザクションが開始されますが、このアプリケーションでは、別のデータベースへの新しい接続を作成し、明示的にデータをコミットして接続を閉じています。非 XA ドライバー データソースを使用して構成されたこのデータ ソース。このアプリケーションでは、ヒューリスティック ハザードを受け入れる (最後の参加者サポート拡張機能) も有効にしました。スケジューラーの実行中に、例外 DSRA9350E: Operation Connection.commit is not allowed during a global transaction が発生しています。

誰でもこれで私を助けることができますか

4

1 に答える 1

3

タスクはトランザクションで実行され、おそらくそのトランザクションで commit を呼び出します。したがって、db 操作を呼び出し、そのトランザクションの外で db をコミットして閉じる必要があります。Bean 管理のトランザクション セッション Bean を作成する

@TransactionManagement(TransactionManagementType.BEAN)

データベースとトランザクション関連のコードを新しい Bean に移動します。

于 2010-04-23T12:10:37.163 に答える