2

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

何か案は?

4

0 に答える 0