WebLogic JTA プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

WebLogic Server でのサードパーティ JDBC XA ドライバの使い方

この節では、以下のトピックを取り上げます。

 


サードパーティ XA ドライバの概要

この節では、分散トランザクションにおける WebLogic Server でのサードパーティ JDBC ドライバの使い方について説明します。これらのドライバは、WebLogic Server 接続プールと DBMS の間の接続を提供します。分散トランザクションで使用するドライバは、後に「/XA」が続くドライバ名 (Oracle Thin/XA Driver など) によって指定されます。

サードパーティ XA ドライバの表

次の表に、サード パーティ JDBC/XA ドライバを WebLogic Server で使用する場合の確認済みの機能について示します。

表 10-1 2 層 JDBC/XA ドライバ
ドライバ/データベースのバージョン
説明
Oracle Thin Driver XA
Sybase jConnect/XA
  • バージョン 6.0
  • バージョン 5.5
  • Adaptive Server Enterprise 12.0

 


Oracle Thin/XA Driver の使い方

WebLogic Server にバンドルされた Oracle Thin Driver 10g は事前にコンフィグレーションされ、そのまま使用できる状態になっています。ドライバを更新する場合や異なるバージョンを使用する場合は、『WebLogic JDBC プログラマーズ ガイド』の「Oracle 拡張機能と Oracle Thin Driver の使用」を参照してください。

WebLogic Server で Oracle Thin/XA Driver を使用するための情報を以下の節で示します。

Oracle Thin/XA Driver のソフトウェア要件

Oracle Thin/XA Driver のソフトウェア要件は次のとおりです。

Oracle Thin/XA Driver の環境の設定

WebLogic Server のコンフィグレーション

『WebLogic JDBC プログラマーズ ガイド』の「Oracle 拡張機能と Oracle Thin Driver の使用」を参照してください。

XA のデータベース サーバでの有効化

XA 用のデータベースを準備するには、以下の操作を実行します。

  1. システム ユーザとして sqlplus にログオンします (sqlplus sys/CHANGE_ON_INSTALL@<DATABASE ALIAS NAME> など)。
  2. 次のコマンドを実行します。@xaview.sql
  3. スクリプト xaview.sql は、$ORACLE_HOME/rdbms/admin ディレクトリにあります。

  4. 以下のパーミッションを与えます。
    • grant select on v$xatrans$ to public (or <user>);
    • grant select on pending_trans$ to public;
    • grant select on dba_2pc_pending to public;
    • grant select on dba_pending_transactions to public;
    • (Oracle Thin driver 10.1.0.3 以降をお使いの場合)
      grant execute on dbms_system to <user>;

上の手順をデータベース サーバ上で実行しない場合、通常の XA データベース クエリと更新は正常に動作できます。ただし、クラッシュ後の再起動に続き、WebLogic Server トランザクション マネージャが回復を行うときに、Oracle リソースの回復は XAER_RMERR になり失敗します。クラッシュの回復は、XA リソースに対する標準的な処理です。

Oracle Thin/XA Driver のコンフィグレーション プロパティ

次の表に、JDBC データ ソースのコンフィグレーションのためのサンプル コードを示します。

Oracle Thin/XA Driver : 接続プール コンフィグレーション
プロパティ名
プロパティ値
Name
oracleXAPool
URL
jdbc:oracle:thin:@serverName:port (Windows では通常 1521) :sid
DriverClassname
oracle.jdbc.xa.client.OracleXADataSource
Database Username
Scott
Properties
user=scott
Test Table Name
DUAL

 


Sybase jConnect 5.5 および 6.0/XA Driver の使い方

Sybase jConnect 5.5 および 6.0/XA Driver を使用する場合の重要なコンフィグレーション情報とパフォーマンス問題を以下の節で示します。

XA をサポートするための Sybase サーバのコンフィグレーション

データベース サーバで環境を設定するには、以下の説明に従います。

トランザクションを実行するときのデッドロックを防ぐために、デフォルトで低レベル ロックを有効にします。

注意 : jConnect.jar、jconn2.jar、および jconn3.jar ファイルは WL_HOME\server\lib フォルダに含まれ、マニフェスト ファイル weblogic.jar で参照されます。WebLogic Server を起動する時に、ドライバが自動的にロードされ、WebLogic Server で使用する準備が整います。これのドライバを WebLogic ユーティリティまたは他のアプリケーションで使用するには、これらのファイルのパスを CLASSPATH で指定します。

XA と Sybase Adaptive Server

XA 接続が適切にサポートされているのは、Sybase Adaptive Server Enterprise 12.0 以降のバージョンのみになります。WebLogic Server との XA 接続は Sybase Adaptive Server 11.5 および 11.9 ではサポートされていません。

Sybase Adaptive Server における実行スレッドとトランザクション

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 Adaptive Server でのトランザクションの動作

Sybase サーバでグローバル トランザクションが開始されているが、完了していない場合、そのトランザクションの結果は、破棄される前のトランザクションの状態によって異なります。

Java クライアントのコンフィグレーション プロパティ

Java クライアントを実行する場合の以下のコンフィグレーション プロパティを設定します。

表 10-2 Sybase jConnect 5.5/XA Driver : 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)

Sybase jConnect 5.5 および 6.0/XA の確認済みの問題

次に、確認済みの問題と BEA の回避策を示します。

表 10-3 Sybase jConnect 5.5 および 6.0 の確認済みの問題と回避策
説明 :
Sybase のバグ
説明/WebLogic Server の回避策
setAutoCommit (true) を呼び出すと次の例外が送出される。
java.sql.SQLException: JZ0S3: The inherited method setAutoCommit(true) cannot be used in this subclass.
10726192
回避策はなし。jConnect 6.0 で修正済み。

分散トランザクションでドライバを使用する場合、XAResource.end(TMSUSPEND) に続けて XAResource.end(TMSUCCESS) を呼び出すと、XAER_RMERR になる。

10727617
WebLogic Server では、このバグに対する内部的な回避策を提供している。
データ ソースの接続プールのプロパティを XAEndOnlyOnce="true" に設定する。
ベンダによる修正が要求されている。

 


その他のサードパーティ XA ドライバの使い方

その他のサードパーティ製 XA 準拠 JDBC ドライバを使用するためには、ドライバ クラス ライブラリのパスを CLASSPATH で指定し、ベンダの説明に従う必要があります。


  ページの先頭       前  次