1

SqlSessions を提供する propertiesbean があります。この Bean には、このすべてのジャズ @ クラス レベルで注釈が付けられています

@Singleton
@LocalBean
@Startup
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)

私もこれを持っています

public SqlSessionFactory getSqlSessionFactory(ConnTypes connType) {...}

必要な SqlSession を返します。

2 つのデータベースがあります。1 つは mysql インスタンスで、もう 1 つはそうではありません (db2 と呼びましょう)。

プロジェクトをローカルで実行すると、すべて問題ありません。両方のデータベースに問題なくアクセスできます。

テスト サーバーでプロジェクトを実行すると、Client Transaction aborted エラーがスローされ始めます。これについてかなりの量の調査を行ったところ、データベース クエリまたはデータベース アクセスに問題がある場合に、これらの例外が発生するようです。その後、トランザクション全体がロールバックとしてマークされ、この例外がスローされます(少なくともそれは私が読んだものです)

クライアントのトランザクション中止エラーが最初にスローされる直前に、XA-Resource エラーがスローされるように見えます。Bean が別のセッションにアクセスしようとすると、それらを取得できることがわかっています。ローカルで実行し、両方のデータベースへの接続を 1 つの方法で維持しようとしたときに、このエラーが発生したことがあります。

両方のデータベースにアクセスするシングルトン プロパティ Bean が、一方のスレッドで mysql セッションを返し、もう一方のスレッドで db2 セッションを返そうとすると、奇妙なトランザクション状態になるのでしょうか?

4

0 に答える 0