2 CORBA オブジ ェ ク ト を呼び出す WebLogic Server ク ラ イアン ト の
手順 7. ト ラ ンザク シ ョ ンを終了する (オプシ ョ ン)
ト ラ ンザ ク シ ョ ン コ ンテキ ス ト 内の BEA Tuxedo CORBA オブジ ェ ク ト にア ク セ ス し た場合、 以下のいずれかの TransactionCurrent メ ソ ッ ド を使用し て ト ラ ンザ ク シ ョ ン を終了し ます。
commit() rollback()
ト ラ ンザク シ ョ ンに関する詳細情報
こ の節では、 BEA Tuxedo 環境での ト ラ ンザ ク シ ョ ンについて さ ら に詳し く 説明 し ます。
マルチスレ ッ ド 処理
BEA Tuxedo CORBA ト ラ ンザ ク シ ョ ン サービ ス を使用する と 、 単一のアプ リ ケーシ ョ ン プ ロ セスの複数のス レ ッ ド か ら、 別個の ト ラ ンザ ク シ ョ ン を同時に 開始で き ます。 た と えば、 2 つのス レ ッ ド が
CosTransactions.Current.begin() と UserTransaction.begin()を同時に 呼び出す場合、 どち ら のス レ ッ ド も、 それぞれの ト ラ ンザ ク シ ョ ンに対応する別 個の ト ラ ンザ ク シ ョ ン コ ンテキ ス ト を持ち ます。
2 CORBA オブジ ェ ク ト を呼び出す WebLogic Server ク ラ イ アン ト の作成
CORBA ト ラ ンザ ク シ ョ ン サービ スでは、 単一のアプ リ ケーシ ョ ンの複数のス レ ッ ド が、 同じ ト ラ ンザ ク シ ョ ン を同時に扱 う こ と はで き ません。
CosTransactions を使用する場合、 以下の よ う に ト ラ ンザ ク シ ョ ンの中断 と 再開 を行っ て、 複数の ス レ ッ ド内でその ト ラ ンザ ク シ ョ ン を使用し ます。
1. 第 1 の ス レ ッ ド では、Current.suspend()を呼び出し て、 ト ラ ンザ ク シ ョ ン を中断し て Control オブジ ェ ク ト を取得し ます。
2. 第 2 の ス レ ッ ド では、 その Control オブジ ェ ク ト の Current.resume()を呼 び出し て、 その ト ラ ンザ ク シ ョ ン を再開し ます。
中断さ れていない ト ラ ンザ ク シ ョ ン を ス レ ッ ド が再開し よ う と する と 、 BEA Tuxedo シ ス テ ムは InvalidControl例外を送出し ます。
UserTransactionでは、suspend() と resume()をサポー ト し ていません。し たがっ て、 UserTransaction を使用する と き には、 複数のス レ ッ ド で 1 つの ト ラ ンザ ク シ ョ ン を使 う こ と はで き ません。
複数のア ク テ ィ ブな WLEC 接続プール
WebLogic Enterprise Connectivity コ ンポーネン ト では、 単一の WebLogic Server ク ラ イ アン ト で複数の WLEC 接続プールを同時にア ク テ ィ ブにで き ます。
CosTransactions.Current.begin()や UserTransaction.begin()を呼び出 し て ト ラ ンザ ク シ ョ ン コ ンテキス ト を作成する と 、 BEA Tuxedo シ ス テ ムは、 そ の ト ラ ンザ ク シ ョ ンを WLEC 接続プールに関連付け ます。 その ト ラ ンザ ク シ ョ ンのス コープ内で行われ る呼び出し はすべて、 その ト ラ ンザ ク シ ョ ンの WLEC 接続プールに関連付け られてい る ド メ イ ン内に存在する オブジ ェ ク ト に対する も のでなければな り ません。
1 つの ト ラ ンザ ク シ ョ ンが複数の BEA Tuxedo ド メ イ ンにま たが る こ と はで き ま せん。 別の ド メ イ ン内のオブジ ェ ク ト を呼び出そ う と する と 、 BEA Tuxedo シ ス テ ムは INVALID_TRANSACTION 例外を送出し ます。
ト ラ ンザ ク シ ョ ン に関す る詳細情報
ア ク テ ィ ブな ト ラ ンザク シ ョ ン と接続の関係
WLEC ク ラ イ アン ト が ト ラ ンザ ク シ ョ ンを開始ま たは再開する と 、 WLEC 接続 プールの イ ン フ ラ ス ト ラ ク チ ャは、 その ト ラ ンザ ク シ ョ ンの コ ンテキス ト 内で送 信さ れ る要求のための接続を確保し ます。 WebLogic Enterprise Connectivity は、
その ト ラ ンザ ク シ ョ ン コ ンテキ ス ト 外の要求を送信する ために こ の接続を使 う こ と はあ り ません。 WebLogic Enterprise Connectivity は、 その ト ラ ンザ ク シ ョ ン がコ ミ ッ ト 、 ロールバ ッ ク 、 も し く は中断 さ れる までその接続を確保し ます。
注意: suspend() と resume()を使用でき るのは CosTransactions だけです。
同時にア ク テ ィ ブにで き る ト ラ ンザ ク シ ョ ンの数は、 プール内で使用で き る接続 の数に よ っ て決ま り ます。 ス レ ッ ド が ト ラ ンザ ク シ ョ ンを開始ま たは再開する と きに接続が利用で き ない場合、 WebLogic Enterprise Connectivity は
NO_RESOURCES例外を送出し ます。
ト ラ ンザク シ ョ ンの管理
各ス レ ッ ド は、 独自の ト ラ ンザ ク シ ョ ン コ ンテキ ス ト を備えてい ます。ス レ ッ ド が ト ラ ンザ ク シ ョ ン を開始ま たは再開する と 、 その ト ラ ンザ ク シ ョ ンはコ ミ ッ ト 、 ロールバ ッ ク、 または中断 さ れる までア ク テ ィ ブにな り ます。 その後に WebLogic Server ク ラ イ アン ト を呼び出し て も、 それ ら が同じ ス レ ッ ド 内で実行
さ れる保証はあ り ません。 し たがっ て、 ス レ ッ ド では、 ト ラ ンザ ク シ ョ ン を コ ミ ッ ト 、 ロールバ ッ ク 、 ま たは中断し てか ら、 WebLogic Server ク ラ イ アン ト の 呼び出し を終了する こ と が大切です。
注意: suspend() と resume() を使用でき るのは CosTransactions だけです。
必要であれば、 次の手順で、 WebLogic Server ク ラ イ アン ト への複数の呼び出し で 1 つの ト ラ ンザ ク シ ョ ン を使用でき ます。
1. それぞれの呼び出し の終わ り に、 ト ラ ンザ ク シ ョ ン を中断し ます。
2. その次の呼び出し で、 ト ラ ンザ ク シ ョ ン を再開し ます。
WLS ク ラ イ アン ト への次の呼び出し を行わない う ちに ト ラ ンザ ク シ ョ ンが タ イ ム ア ウ ト する可能性があ る ので、 こ の方法を使用する と きには注意し て く だ さ い。