ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     WebLogic JTA プログラマーズ ガイド   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

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

 

この章では、WebLogic Server トランザクション内で JDBC XA ドライバをどのように使うかを説明します。

 


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

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

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

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

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

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

説明

Type 2 XA ドライバ(ネイティブ .dll)

IBM DB2

  • バージョン 7.2

  • プラットフォーム: NT

DB2 7.2/XA ドライバの使い方を参照。

Type 4 XA ドライバ(オール Java)

Oracle Thin ドライバ XA

  • ドライバ バージョン 8.1.7

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

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

Sybase jConnect/XA

  • バージョン 5.2.1

  • Adaptive Server Enterprise 12.0

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

Cloudscape

  • バージョン 3.5.1

Cloudscape 3.5.1/XA ドライバのソフトウェア要件を参照。


 

 


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

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

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

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

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

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

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

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

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

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

説明

Oracle のバグ

説明/WebLogic Server 6.1 の回避策

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 8.1.7/XA ドライバの環境の設定

次のように環境を設定します。

XA 用データベース サーバを有効にします。

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

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

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

表7-3 Oracle Thin 8.1.7/XA ドライバ : 接続プールのコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXAPool

Targets

myserver,server1

URL

jdbc:oracle:thin:@baybridge:1521:bay817

DriverClassname

oracle.jdbc.xa.client.OracleXADataSource

Initial Capacity

1

MaxCapacity

20

CapacityIncrement

2

Properties

user=scott;password=tiger

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

表7-4 Oracle Thin 8.1.7/XA ドライバ : TxDataSource のコンフィグレーション プロパティ

プロパティ名

プロパティ値

Name

jtaXADS

Targets

myserver,server1

JNDIName

jtaXADS

PoolName

jtaXAPool

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

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

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

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

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

説明

Sybase のバグ

説明/WebLogic Server 6.1 の回避策

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 jConnect 5.2.1/XA ドライバの接続プール

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

表7-6 Sybase jConnect 5.2.1/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

Password

dbpassword

Initial Capacity

1

MaxCapacity

10

CapacityIncrement

1

Lrm_name は、論理リソース マネージャの名前です。

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

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

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

プロパティ名

プロパティ値

Name

jtaXADS

Targets

server1

JNDIName

jtaXADS

PoolName

jtaXAPool

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

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

表7-8 Sybase jConnect 5.2.1/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

4100

Cloudscape 3.5.1/XA ドライバの使い方

以下の節では、WebLogic Server 6.1 で Type 2 Cloudscape 3.5.1/XA ドライバを使用するための情報を示します。

Cloudscape 3.5.1/XA ドライバのソフトウェア要件

Cloudscape 3.5.1/XA ドライバは JDK 1.3 RC1 をサポートしています。詳細については、http://www.cloudscape.com/support/techinfo.jsp を参照してください。

Cloudscape 3.5.1/XA ドライバの確認済みの問題

次の表に、確認済みの問題を示します。

表7-9 Cloudscape 3.5.1/XA ドライバの確認済みの問題

説明

Cloudscape の拡張機能の要求

説明/WebLogic Server 6.1 の回避策

確認済みの問題はなし。


.

Cloudscape 3.5.1/XA ドライバの環境の設定

次のように環境変数を設定します(NT 構文が前提)。

注意: weblogicaux.jar は javax クラスの場合のみです。

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

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

表7-10 Cloudscape 3.5.1/XA ドライバ : 接続プールのコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXAPool

Targets

myserver,server1

DriverClassname

COM.cloudscape.core.XaDataSource

Initial Capacity

1

Max Capacity

10

Capacity Increment

2

Properties

databaseName=CloudscapeDB;
createDatabase=create

Supports Local Transaction

True

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

表7-11 Cloudscape 3.5.1/XA ドライバ : TxDataSource のコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXADS

Targets

myserver,server1

JNDIName

jtaXADS

PoolName

jtaXAPool

DB2 7.2/XA ドライバの使い方

以下の節では、WebLogic Server 6.1 で Type2 DB2 7.2/XA ドライバを使用するために環境を設定する方法について説明します。

DB2 7.2/XA ドライバの環境の設定

次のように環境を設定します。

ここで、<db2> は DB2 サーバがインストールされているディレクトリを表します。

XAResource として DB2 を使用する場合の制限

  1. 複数の接続プールを持つコンフィグレーションの場合、各接続プールは個別のデータベース インスタンスを持つ必要があります。

  2. トランザクションは、中断されたトランザクションに既に関連付けられているリソースでは開始できません。この場合、javax.transaction.InvalidTransactionException(非アクティブなトランザクションを再開しようとした)が送出されます。中断と再開の間に、中間トランザクションが、中断されたトランザクションで使用されたものと同じリソースを使用すると、javax.transaction.invalidtransation 例外が送出されます。異なるリソースが中間トランザクションの内部で使用される場合は、正常に動作します。

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

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

表7-12 DB2 7.2/XA ドライバ : 接続プールのコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXAPool

Targets

server1

DriverClassname

COM.ibm.db2.jdbc.DB2XADataSource

Initial Capacity

1

MaxCapacity

10

CapacityIncrement

2

Properties

user=db2admin;
password=db2admin;
DatabaseName=NEWDEMO

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

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

表7-13 DB2 7.2/XA ドライバ : TxDataSource のコンフィグレーション

プロパティ名

プロパティ値

Name

jtaXADS

Targets

server1

JNDIName

jtaXADS

PoolName

jtaXAPool

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

他のサードパーティ製 XA 準拠 JDBC ドライバを使用するには、ドライバのクラス ライブラリに対するパスを CLASSPATH に追加する必要があります。

 

back to top previous page next page