![]() ![]() ![]() ![]() |
この節では、分散トランザクションにおける WebLogic Server でのサードパーティ JDBC ドライバの使い方について説明します。これらのドライバは、WebLogic Server 接続プールと DBMS の間の接続を提供します。分散トランザクションで使用するドライバは、後に「/XA」が続くドライバ名 (Oracle Thin/XA Driver など) によって指定されます。
次の表に、サード パーティ JDBC/XA ドライバを WebLogic Server で使用する場合の確認済みの機能について示します。
WebLogic Server にバンドルされた Oracle Thin Driver 10g は事前にコンフィグレーションされ、そのまま使用できる状態になっています。ドライバを更新する場合や異なるバージョンを使用する場合は、『WebLogic JDBC プログラマーズ ガイド』の「Oracle 拡張機能と Oracle Thin Driver の使用」を参照してください。
WebLogic Server で Oracle Thin/XA Driver を使用するための情報を以下の節で示します。
Oracle Thin/XA Driver のソフトウェア要件は次のとおりです。
『WebLogic JDBC プログラマーズ ガイド』の「Oracle 拡張機能と Oracle Thin Driver の使用」を参照してください。
XA 用のデータベースを準備するには、以下の操作を実行します。
上の手順をデータベース サーバ上で実行しない場合、通常の XA データベース クエリと更新は正常に動作できます。ただし、クラッシュ後の再起動に続き、WebLogic Server トランザクション マネージャが回復を行うときに、Oracle リソースの回復は XAER_RMERR
になり失敗します。クラッシュの回復は、XA リソースに対する標準的な処理です。
次の表に、JDBC データ ソースのコンフィグレーションのためのサンプル コードを示します。
Sybase jConnect 5.5 および 6.0/XA Driver を使用する場合の重要なコンフィグレーション情報とパフォーマンス問題を以下の節で示します。
データベース サーバで環境を設定するには、以下の説明に従います。
sp_configure
"enable DTM",1
を実行して、トランザクションを有効にします。sp_configure "enable xat coordination",1
を実行します。<USER_NAME>
にロール dtm_tm_role
を付与します。SYBASE_INSTALL\OCS-12_0\sample\xa-dtm
サブディレクトリにあるサンプルの xa_config
ファイルを、3 レベル上位の SYBASE_INSTALL
へコピーします。SYBASE_INSTALL
は、Sybase サーバをインストールしたディレクトリです。次に例を示します。 $ SYBASE_INSTALL\xa_config
xa_config
ファイルを編集します。最初の [xa
] セクションで、サンプル サーバ名を適切なサーバ名に変更します。
トランザクションを実行するときのデッドロックを防ぐために、デフォルトで低レベル ロックを有効にします。
注意 : | jConnect.jar、jconn2.jar 、および jconn3.jar ファイルは WL_HOME \server\lib フォルダに含まれ、マニフェスト ファイル weblogic.jar で参照されます。WebLogic Server を起動する時に、ドライバが自動的にロードされ、WebLogic Server で使用する準備が整います。これのドライバを WebLogic ユーティリティまたは他のアプリケーションで使用するには、これらのファイルのパスを CLASSPATH で指定します。 |
XA 接続が適切にサポートされているのは、Sybase Adaptive Server Enterprise 12.0 以降のバージョンのみになります。WebLogic Server との XA 接続は Sybase Adaptive Server 11.5 および 11.9 ではサポートされていません。
Adaptive Server 12.0 より前のバージョンでは、トランザクションのすべてのリソースが、サーバ上の単一のタスクによって非公開で所有されていました。サーバは、トランザクションを開始したタスク以外のタスクとはトランザクションを共有できませんでした。Adaptive Server バージョン 12.x には、XA 準拠のトランザクション マネージャ (WebLogic Server など) によって使用されるサスペンドおよび結合のセマンティクスに対するサポートが含まれています。トランザクションは異なる実行スレッド間で共有できます。つまり、1 つの実行スレッドに関連付けることはできません (デタッチ状態)。
Sybase サーバでは、dtm detach timeout period
を設定することで、分散トランザクション ブランチがデタッチ状態 (関連付けられた実行スレッドがない状態) のままでいる時間 (分単位) を設定できます。この時間が経過すると、DBMS は自動的にトランザクションをロールバックします。dtm detach timeout period
は、データベース サーバ上のすべてのトランザクションに適用されます。個々のトランザクションに対しては設定できません。
たとえば、10 分のデタッチ状態が経過した後、自動的にトランザクションをロールバックするには、次のコマンドを使用します。
sp_configure 'dtm detach timeout period', 10
WebLogic Server でトランザクションがタイムアウトする前にデータベース サーバによってトランザクションがロールバックされないように、dtm detach timeout period
はトランザクションのタイムアウトより大きい値に設定する必要があります。
dtm detach timeout period
の詳細については、Sybase のドキュメントを参照してください。
Sybase サーバでグローバル トランザクションが開始されているが、完了していない場合、そのトランザクションの結果は、破棄される前のトランザクションの状態によって異なります。
xa.end
呼び出しの前にクライアントが終了した場合、トランザクションはロールバックされます。 xa.end
呼び出しの後にクライアントが終了した場合、トランザクションはデータベース サーバ上に残り (すべての関連するロックを保持し) ます。xa.start
を呼び出したが、xa.end
をまだ呼び出していないときに不意に終了した場合は、データベース サーバが即座にトランザクションをロールバックし、トランザクションによって保持されていたロックを解放します。xa.start
および xa.end
を呼び出し、不意に終了した場合は、データベース サーバは、dtm detach timeout period
で指定した時間が経過した後でトランザクションをロールバックし、トランザクションによって保持されていたロックを解放します。「デタッチされたトランザクションに対するタイムアウトの設定」を参照してください。xa.start
および xa.end
を呼び出し、トランザクションの準備が完了していたときに、アプリケーションが不意に終了した場合は、正常に回復できるようにトランザクションは存続します。トランザクション マネージャは rollback または commit を呼び出し、トランザクションを完了する必要があります。
Java クライアントを実行する場合の以下のコンフィグレーション プロパティを設定します。
その他のサードパーティ製 XA 準拠 JDBC ドライバを使用するためには、ドライバ クラス ライブラリのパスを CLASSPATH
で指定し、ベンダの説明に従う必要があります。
![]() ![]() ![]() |