BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

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

 Previous Next Contents Index PDF で侮ヲ  

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

この章では次の内容について説明します。

 


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

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

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

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

表7-1 2 層 JDBC/XA ドライバ

ドライバ/データベースのバージョン

説明

Oracle Thin ドライバ XA

  • ドライバ バージョン 8.1.7

  • データベース バージョン 8.1.7

Oracle Thin/XA ドライバの使い方を参照。

Oracle Thin ドライバ XA

  • ドライバ バージョン 9.0.1

  • データベース バージョン 9.0.1

Oracle Thin/XA ドライバの使い方を参照。

Sybase jConnect/XA

  • バージョン 5.5

  • Adaptive Server Enterprise 12.0

Sybase jConnect 5.5/XA ドライバの使い方を参照。


 

 


サードパーティ ドライバのコンフィグレーションとパフォーマンス要件

次に、WebLogic Server で特定のサードパーティ XA ドライバを使用するための要件とガイドラインを示します。

注意: ここに掲載されていないサードパーティ ドライバを使用する場合、接続プール プロパティの追加設定が必要となる場合があります。詳細については、『管理者ガイド』の「追加の XA 接続プール プロパティ」を参照してください。

Oracle Thin/XA ドライバの使い方

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

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

Oracle Thin/XA ドライバのソフトウェア要件

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

Oracle Thin 8.1.7/XA ドライバの確認済みの問題

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

表7-2 Oracle Thin ドライバの確認済みの問題と回避策

説明

Oracle のバグ

説明/WebLogic Server の回避策

ORA-01453 - 「SET TRANSACTION をトランザクションの最初の文にする必要があります」


Oracle Thin/XA 8.1.7 ドライバを使用する場合には、トランザクションのトランザクション アイソレーション レベルを変更できない。トランザクションは、データベースに対して設定されているデフォルトのトランザクション アイソレーションを使用する。

ORA-01002 - 「フェッチ順序が無効です」例外。XAResource.end(TMSUSPEND) 結果および XAResource.start(TMRESUME) 結果の後で結果セットを反復すると ORA-01002 になる。

-

回避策として、文のフェッチサイズを結果セットのサイズ以上に設定する。つまり、この回避策を使用しない限り、Oracle Thin 8.1.7 ドライバをクライアント サイドでは使用できない。または、メソッド呼び出しの間、Bean では結果セットを開いておくことができない。

XAResource.end(TMSUSPEND) に XAResource.end(TMSUCCESS) を続けると、XAER_RMERR になる。

1527725

WebLogic Server では、このバグに対する内部的な回避策を提供している。

マルチスレッド XA で使用する場合、ドライバはハングするか、XAER_RMERR になる。

1569235

WebLogic Server では、このバグに対する内部的な回避策を提供している。

グローバル トランザクションのない更新がサポートされない。更新時にグローバル トランザクションがない場合、更新を実行するためにローカル トランザクションが暗黙的に開始され、グローバル トランザクションと同じ XA 接続が再利用されるために XAER_RMERR になる。

さらに、アプリケーションがローカル トランザクションのコミットを試みる (自動コミットを true に設定する、または Connection.commit() を明示的に呼び出す) と、Oracle XA ドライバが「SQLException: Use explicit XA call」を返す。

-

アプリケーションで XA ドライバを使用して更新を行う場合は、有効なグローバル トランザクション コンテキストが存在していなければならない。つまり、Bean メソッドには、トランザクション属性として Required、RequiresNew、または Mandatory を持たせる必要がある。

XAResource.recover が、入力フラグに関係なく、不明な Xid のセットを繰り返し返す。XA 仕様では、トランザクション マネージャはまず TMSTARTRSCAN で XAResource.recover を呼び出し、続いて Xid が返されなくなるまで繰り返し TMNOFLAGS で XAResource.recover を呼び出す。このバグが原因で無限反復が発生し、Oracle カーソルが使い果たされたことを示す「ORA-01000: 最大オープン カーソル数を超えました」というエラーが表示される。

-

WebLogic Server では、この問題に対する内部的な回避策を提供している。

Oracle Thin/XA ドライバの環境の設定

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

WebLogic Server にバンドルされた Oracle Thin Driver 8.1.7 は事前にコンフィグレーションされ、そのまま使用できる状態になっています。Oracle Thin ドライバ バージョン 9.0.1 を使用する場合は、WL_HOME¥server¥libclasses12.zip のバージョンをバージョン 9.0.1 に代える必要があります。『WebLogic JDBC プログラマーズ ガイド』の「Oracle Thin Driver の変更または更新」を参照してください。

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

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

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

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

Oracle Thin/XA ドライバのコンフィグレーション プロパティ

次の表に、接続プールのコンフィグレーションのためのサンプル コードを示します。

Oracle Thin/XA ドライバ : 接続プール コンフィグレーション

プロパティ名

プロパティ値

Name

jtaXAPool

Targets

myserver,server1

URL

jdbc:oracle:thin:@serverName:port (Windows では通常 1521):sid

DriverClassname

oracle.jdbc.xa.client.OracleXADataSource

Initial Capacity

1

MaxCapacity

20

CapacityIncrement

2

Properties

user=scott
password=tiger

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

表7-3 Oracle Thin/XA ドライバ : TxDataSource のコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXADS

Targets

myserver,server1

JNDIName

jtaXADS

PoolName

jtaXAPool

Sybase jConnect 5.5/XA ドライバの使い方

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

Sybase jConnect 5.5/XA ドライバの確認済みの問題

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

表7-4 Sybase jConnect 5.5 の確認済みの問題と回避策

説明

Sybase のバグ

説明/WebLogic Server の回避策

setAutoCommit (true) を呼び出すと次の例外が送出される。

  java.sql.SQLException:JZ0S3:The inherited method setAutoCommit(true) cannot be used in this subclass. 

10726192

回避策はなし。ベンダによる修正が必要。

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

10727617

WebLogic Server では、このバグに対する内部的な回避策を提供している。

接続プールのプロパティを XAEndOnlyOnce="true" に設定する。

ベンダによる修正が要求されている。

Sybase jConnect/XA ドライバの環境の設定

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

   $ SYBASE_INSTALL¥xa_config

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

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

Sybase jConnect 5.5/XA ドライバの接続プール

次の表に、接続プールのコンフィグレーションのためのサンプル コードを示します。

表7-5 Sybase jConnect 5.5/XA ドライバ : サンプル接続プール コンフィグレーション

プロパティ名

プロパティ値

Name

jtaXAPool

Targets

myserver,server1

DriverClassname

com.sybase.jdbc2.jdbc.SybXADataSource

Properties

User=dbuser;

DatabaseName=dbname;

ServerName=server_name_or_IP_address;

PortNumber=serverPortNumber;

NetworkProtocol=Tds;

resourceManagerName=Lrm_name_in_xa_config;

resourceManagerType=2

Initial Capacity

1

MaxCapacity

10

CapacityIncrement

1

Supports Local Transaction

True

ここで、Lrm_name は Logical Resource Manager 名を参照します。

注意: また、config.xml ファイルの接続プール タグに KeepXAConnTillTxComplete="true" を追加する必要があります。詳細については、『管理者ガイド』の「追加の XA 接続プール プロパティ」を参照してください。

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

表7-6 Sybase jConnect 5.5/XA ドライバ : TxDataSource のコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXADS

Targets

server1

JNDIName

jtaXADS

PoolName

jtaXAPool

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

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

表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)

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

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

 

Back to Top Previous Next