2 つの PostgreSQL データベース間で分散トランザクションを実行しようとしています。Glassfish v3.0.1 を使用しています。
私の GlassFish ドメインでは、リソース タイプが javax.sql.XADataSource、クラス名が org.postgresql.xa.PGXADataSource になるように 2 つの接続プールを設定しています。
両方のデータベースにヒットするステートレス EJB メソッドで統合テストを作成しようとしています。統合テストを実行するために、組み込みバージョンの Glassfish を作成し、JNDI を介して EJB を検索しています。
永続化ユニットを 1 つだけ含む統合テストを実行すると、問題なく動作します。
これは私がやろうとしている最初の分散トランザクションなので、すべてが正しく設定されているかどうかわかりません。
スタックが何を得ているのかよくわからないので、これを解決する方法に関する情報を見つける方法については本当にわかりません。myDomain/logs のログを調べましたが、何も見つかりませんでした。他のログはありますか? スタック トレースは次のとおりです。
javax.ejb.EJBException: コンテナ管理のトランザクションを完了できません。com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5002) com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4756) com.sun.ejb.containers.BaseContainer.postInvoke (BaseContainer.java:1955) com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1906) com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198) com.sun. ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84) at $Proxy101.createAccount(Unknown Source) at cheetah.services.impl. EJB31_Generated_ AccountService _Intf_ Beanorg.junit.runners.ParentRunner.run(ParentRunner.java:236) での statement.RunAfters.evaluate(RunAfters.java:31) junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39) で org.apache.tools .ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518) org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052) org.apache.tools .ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906) 原因: javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: 例外 [org.omg.CORBA.INTERNAL: vmcid: 0x0 マイナー コード: 0 完了: たぶん] リソース [ロールバック] 操作。vmcid: 0x0 マイナー コード: 0 完了: いいえ com.sun.jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:330) で com.sun.