7 WebLogic Server でのサードパー ティ JDBC XA ドライバの使い方
CapacityIncrement 1 Supports Local
Transaction
True
表
7-5 Sybase jConnect 5.5/XA
ドライバ:
サンプル接続プールコンフィグレーションプロパティ名 プロパティ値
表
7-6 Sybase jConnect 5.5/XA
ドライバ: TxDataSource
のコンフィグレーションプロパティ名 プロパティ値
Name
jtaXADSTargets
server1JNDIName
jtaXADSPoolName
jtaXAPoolサードパーティ ドライバのコンフィグレーションとパフォーマンス要件
Java クライアントのコンフィグレーション プロパティ
Java クライアントを実行する場合の以下のコンフィグレーション プロパティを
設定します。その他のサードパーティ XA ドライバ
その他のサードパーティ製 XA 準拠 JDBC ドライバを使用するためには、ドライ バ クラス ライブラリのパスを CLASSPATHで指定し、ベンダーの説明に従う必要 があります。
表
7-7 Sybase jConnect 5.5/XA ドライバ : Java クライアント接続プロパティ
プロパティ名 プロパティ値
ds.setPassword <password>
ds.setUser <username>
ds.setNetworkProtocol Tds
ds.setDatabaseName <database-name>
ds.setResourceManagerName <Lrm name in xa_config file>
ds.setResourceManagerType 2
ds.setServerName <machine host name>
ds.setPortNumber port (通常は 4100)
8 WebLogic Server XA リ ソース プ ロバイダの要件
BEA WebLogic Server
では Java Transaction API (JTA) がサポー ト さ れてお り 、XA
準拠の リ ソ ース を使用し て分散 ト ラ ンザ ク シ ョ ン を調整する ト ラ ンザ ク シ ョ ン マネージ ャ を備えています。 こ の章では、 WebLogic Server で分散 ト ラ ンザ ク シ ョ ンに参加する上での XA リ ソ ースの要件について説明し ます。JTA
の詳細については、Sun Microsystems 発行の Java Transaction API (JTA) 仕様 バージ ョ ン 1.0.1a を参照し て く だ さ い。こ の章は、 サー ド パーテ ィ アプ リ ケーシ ョ ンの イ ンテグ レータ を対象 と し てい ます。 こ の章の内容は以下の と お り です。
概要
ト ラ ンザ ク シ ョ ン マネージ ャへの登録
XAResource の取得 と 解放
オプシ ョ ンの weblogic.transaction.XAResource イ ン タ フ ェース
概要
XA
リ ソース プ ロバ イ ダは、 WebLogic Server での分散 ト ラ ンザ ク シ ョ ンへの参 加を可能にする ため、 ス レ ッ ド アフ ィ ニテ ィ 制限のない JTAXAResourceイ ン タ
フ ェース をサポー ト し てい る必要があ り ます。非 JDBC リ ソ ースについては、 以下の作業も リ ソ ース プ ロバ イ ダが行います。
起動時に、 WebLogic Server の ト ラ ンザ ク シ ョ ン マネージ ャ に XA リ ソ ース を登録し ます。
必要に応じ て、 XA リ ソ ースの使用前に WebLogic Server の ト ラ ンザ ク シ ョ ン マネージ ャか ら リ ソ ース を取得し、 使用後にそれを解放し ます。
必要に応じ て、weblogic.transaction.XAResource イ ン タ フ ェース を実装 し ます。
ト ラ ンザク シ ョ ン マネージ ャへの登録
JTA
仕様では、 XA リ ソース をサーバの ト ラ ンザ ク シ ョ ン マネージ ャにブー ト ス ト ラ ッ プする方法は定義 さ れてい ません。 そのため、 WebLogic Server では登録 用の API が定義 さ れています。XA
リ ソ ース プ ロバ イ ダでは、 起動時に ローカル ト ラ ンザ ク シ ョ ン マネージ ャ に XAResource実装を登録する ため、 次の手順が実行さ れます。1. JNDI
ま たは TxHelperイ ン タ フ ェース を使用し て、JTA ト ラ ンザ ク シ ョ ン マ ネージ ャ を取得し ます。 次の コー ド は、TxHelper イ ン タ フ ェース を使用し て現在の ト ラ ンザ ク シ ョ ン マネージ ャ を取得する方法を示し ています。import javax.transaction.xa.XAResource;
import javax.transaction.TransactionManager;
import weblogic.transaction.TxHelper;
TransactionManager tm = TxHelper.getTransactionManager();
2. JTA
ト ラ ンザ ク シ ョ ン マネージ ャに XA リ ソ ース を登録し ます。XAResource res = ...// リソース プロバイダの XAResource の実装 tm.registerStaticResource(name, res); // 静的なリソースの取得 tm.registerDynamicResource(name, res2); // 動的なリソースの取得
リ ソース プ ロバイ ダは、 静的ま たは動的な登録 メ ソ ッ ド を使用し て名前 と 実 装を提供し ます。 静的および動的な取得についての詳細は、「XAResource の 取得 と 解放」 を参照し て く だ さ い。
リ ソース名に よ っ て ト ラ ンザ ク シ ョ ン ブ ラ ンチが決ま り ます。 リ ソースが複 数の イ ン ス タ ン ス をサポー ト する場合、 それぞれの リ ソ ース イ ン ス タ ン スは 異な る名前を使用する必要があ り ます。 こ の リ ソ ース名は管理に も使用 さ れ ます。
XAResource
の取得 と 解放XA
リ ソースは、 ト ラ ンザ ク シ ョ ン作業で取得する よ り も前に、 ト ラ ンザ ク シ ョ ン マネージ ャ に登録さ れてい る必要があ る点に注意し て く だ さ い。3. JTA
ト ラ ンザ ク シ ョ ン マネージ ャ か ら、 XA リ ソ ース を登録解除し ます。XAResource res = … // リソース プロバイダの XAResource の実装 tm.unregisterResource(name);
現在のサーバ上で こ の名前に関連付け ら れてい る リ ソ ース プ ロバ イ ダが登録 解除 さ れます。 こ の リ ソースに未処理の ト ラ ンザ ク シ ョ ンがあ る場合、 リ ソースの登録を解除する と 、 ト ラ ンザ ク シ ョ ンはロールバ ッ ク さ れ、 ト ラ ン ザ ク シ ョ ン ブ ラ ンチは破棄さ れます。
XAResource の取得と解放
JTA
アーキテ ク チャ では、 ト ラ ンザ ク シ ョ ン マネージ ャでの リ ソースの暗黙的 な取得 と 解放を含め、 ト ラ ンザ ク シ ョ ン リ ソ ース マネージ ャの役割を アプ リ ケーシ ョ ン サーバが果た し ます。WebLogic Server
では、 XA リ ソ ースの静的な取得 と 動的な取得がサポー ト さ れ ています。静的な取得と解放
XA
リ ソース を静的に取得し て登録する場合、 WebLogic Server がアプ リ ケー シ ョ ン サーバの役割を果た し、 XA リ ソ ース プ ロバ イ ダのために暗黙的な取得 と 解放を実行し ます。WebLogic Server は、 ト ラ ンザ ク シ ョ ンの開始時 と 再開時に リ ソ ース を取得し ま
す。 ト ラ ンザ ク シ ョ ンが暗黙的に再開 さ れるのは、 それ以前に関連付け られた トラ ンザ ク シ ョ ン を持つ Bean 管理の ト ラ ンザ ク シ ョ ン Bean を呼び出す メ ソ ッ ド が開始さ れた と き、 および別のサーバの呼び出し が返 さ れた と き です。
WebLogic Server
は同様に、 ト ラ ンザ ク シ ョ ンの中断時、 コ ミ ッ ト 時、 および ロールバ ッ ク時に リ ソ ース を解放し ます。 ト ラ ンザ ク シ ョ ンが暗黙的に中断 さ れ返 さ れた と き です。 使用 さ れる解放フ ラ グは、 リ ソ ース プ ロバイ ダでサポー ト さ れてい る場合には getDelistFlag() メ ソ ッ ド で、getDelistFlag() メ ソ ッ ド がサポー ト さ れていない場合には TMSUSPENDか ら取得し ます。
getDelistFlag()メ ソ ッ ド の詳細については、「オプシ ョ ンの
weblogic.transaction.XAResource イ ン タ フ ェース」 を参照し て く だ さ い。
動的な取得と解放
XA
リ ソ ース プ ロバ イ ダ自体を動的に取得し て登録する こ と によ って、 取得およ び解放を実行する こ と も でき ます。 こ の場合、 取得 と 解放の実行において、 XA リ ソース プ ロバイ ダが部分的に JTA アプ リ ケーシ ョ ン サーバの役割を果た し ま す。 動的な取得の利点は、 リ ソース プ ロバイ ダが必要に応じ てゆ るやかな取得 を実行する こ と で、 不必要な リ ソ ースの取得を避け る こ と がで き る点です。XA
リ ソ ース を動的に取得する場合は、 XA リ ソース プ ロバイ ダで以下が実行さ れます。import javax.transaction.Transaction;
// JNDI または TxHelper を介して現在のトランザクションを取得する Transaction tx = TxHelper.getTransaction();
tx.enlistResource(res);
リ ソースの取得 と 解放には、 かな り の負荷がかかるおそれがあ り ます。
WebLogic Server
の ト ラ ンザ ク シ ョ ン マネージ ャ では、 最適化のため同じ ス レ ッ ド 内の同じ リ ソースが重複し て取得 さ れない よ う になっ てい ます。XA
リ ソ ース を動的に解放する場合は、 XA リ ソース プ ロバイ ダが上記の よ う に ト ラ ンザ ク シ ョ ン を取得し、 解放フ ラ グ を提供する と 同時に delistResource メ ソ ッ ド を呼び出し ます。tx.delistResource(res, flag);
リ ソース を動的に取得し て登録する場合、 取得の手順は省略で き ません。 解放の 手順は省略可能です。
WebLogic Server の ト ラ ンザ ク シ ョ ン マネージ ャ は遅延解放を実行し ます。 遅延
解放の場合は、 ト ラ ンザ ク シ ョ ンの中断時 と 終了時に XA リ ソ ースに対し て end() メ ソ ッ ド が呼び出さ れます。 ト ラ ンザ ク シ ョ ン マネージ ャは、 次の順番 で解放フ ラ グ を取得し ます。オ プ シ ョ ンの
weblogic.transaction.XAResource
イ ン タ フ ェ ー スリ ソ ース プロバ イ ダがすでに解放 さ れた XA リ ソ ース を保持し ている場合 は、 以前に提供 さ れた解放フ ラ グ を使用し ます。
リ ソ ース プロバ イ ダで getDelistFlag() メ ソ ッ ド がサポー ト さ れている場 合は、 その メ ソ ッ ド を呼び出し て解放フ ラ グ を取得し ます。 詳細について は、「オプシ ョ ンの weblogic.transaction.XAResource イ ン タ フ ェース」 を参照 し て く だ さ い。
リ ソ ース プロバ イ ダが上記のいずれを も サポー ト し ていない場合、 こ れま で 通 り TMSUSPENDを使用し ます。
オプシ ョ ンの
weblogic.transaction.XAResource イ ン タ フ ェース
静的な解放の場合、 または動的な解放を省略し た場合、 WebLogic Server JTA ト ラ ンザ ク シ ョ ン マネージ ャは、 こ れまで通 り メ ソ ッ ド 呼び出し の間に
TMSUSPENDを使用し て XA リ ソース を解放し、 オープン し てい る可能性のあ る カー ソ ルを保持し ます。 し か し、 リ ソ ースに よ っ ては、TMSUCCESSで解放する よ り も多 く の内部 リ ソ ース を必要 と するおそれがあ り ます。 XA リ ソ ース プ ロバ イ ダは、 オプシ ョ ンの weblogic.transaction.XAResourceイ ン タ フ ェース を サポー ト し てお り 、 WebLogic Server で使用するデフ ォル ト の解放フ ラ グ をオー バー ラ イ ド でき ます。
weblogic.transaction.XAResource イ ン タ フ ェースでは、 次の メ ソ ッ ド がサ ポー ト さ れています。
package weblogic.transaction;
public interface XAResource extends javax.transaction.xa.XAResource { int getDelistFlag();
}
こ の メ ソ ッ ド が リ ソ ース プ ロバイ ダでサポー ト さ れている場合、 WebLogic
Server
の ト ラ ンザ ク シ ョ ン マネージ ャは getDelistFlag() メ ソ ッ ド を呼び出し て、 ト ラ ンザ ク シ ョ ンの中断時 と メ ソ ッ ド の終了時に リ ソースの解放に使用する 解放フ ラ グ を取得し ます。9 ト ラ ンザク シ ョ ンの ト ラ ブル シ ューテ ィ ング
こ の章では、 ト ラ ンザ ク シ ョ ン失敗の原因を突き止めた り 、 問題修正の手段を決 定し た り する ための ト ラ ブルシ ューテ ィ ング ツールおよびタ ス ク について説明
し ます。
こ の章では次の内容について説明し ます。
概要
ト ラ ブルシ ューテ ィ ング ツール
デバ ッ グの ヒ ン ト
概要
WebLogic Server では、 実行中の ト ラ ンザ ク シ ョ ンをモニ タ し 、 ヒ ュー リ ス
テ ィ ッ ク な終了のケースで適切な情報を確実に取 り 込むこ と がで き ます。 ま た、データベース ク エ リ 、 ト ラ ンザ ク シ ョ ン要求、 および Bean メ ソ ッ ド のパフ ォー マン ス をモニ タする こ と も でき ます。
ト ラ ブルシ ューテ ィ ング ツール
WebLogic Server
では、 ト ラ ンザ ク シ ョ ンの ト ラ ブルシ ューテ ィ ングで以下の支 援を利用で き ます。9-2 ページの 「例外」
ページの 「 ト ラ ンザ ク シ ョ ン識別子」