• 検索結果がありません。

Supports Local

ドキュメント内 jta.book (ページ 74-89)

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

jtaXADS

Targets

server1

JNDIName

jtaXADS

PoolName

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 ページの 「例外」

ページの 「 ト ラ ンザ ク シ ョ ン識別子」

ドキュメント内 jta.book (ページ 74-89)

関連したドキュメント