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 セッションを返そうとすると、奇妙なトランザクション状態になるのでしょうか?