Weblogic 11g を使用しています。
ある時点で、私の Java EE アプリケーションは、それぞれ別のサーバーで 3 つのリモート EJB メソッドを呼び出さなければなりません。
私のコードスニペット:
Hashtable<String, Object> firstServerEnv = new Hashtable<String, Object>();
firstServerEnv.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
firstServerEnv.put(Context.PROVIDER_URL, "t3://myFirstServer:7101");
final Context firstServerContext = new InitialContext(firstServerEnv);
UserTransaction firstServerTransaction = (UserTransaction)firstServerContext.lookup("javax.transaction.UserTransaction");
// lookup for first EJB
Hashtable<String, Object> secondServerEnv = new Hashtable<String, Object>();
secondServerEnv.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
secondServerEnv.put(Context.PROVIDER_URL, "t3://mySecondServer:7101");
final Context secondServerContext = new InitialContext(secondServerEnv);
UserTransaction secondServerTransaction = (UserTransaction)secondServerContext.lookup("javax.transaction.UserTransaction");
// lookup for second EJB
Hashtable<String, Object> thirdServerEnv = new Hashtable<String, Object>();
thirdServerEnv.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
thirdServerEnv.put(Context.PROVIDER_URL, "t3://myThirdServer:7101");
final Context thirdServerContext = new InitialContext(thirdServerEnv);
UserTransaction thirdServerTransaction = (UserTransaction)thirdServerContext.lookup("javax.transaction.UserTransaction");
// lookup for third EJB
// Start global transaction
// join firstServerTransaction, secondServerTransaction and thirdServerTransaction into one and begin transaction
// execute methods from first EJB
// execute methods from second EJB
// execute methods from third EJB
// Commit or rollback previously joined global transaction
グローバル トランザクションの開始とコミット/ロールバックを実行する方法。
次のようなことを試しましたが、どのトランザクションがそれに参加しているTransactionManager tm = (TransactionManager)new InitialContext().lookup("javax.transaction.TransactionManager")
かを知る方法がわかりませんか?tm
何か案は?