Hitachi

ノンストップデータベース HiRDB Version 9 UAP開発ガイド


16.4.3 分散トランザクション

JDBC2.0 Optional Packageでは,接続プール機能の拡張として,X/OpenのXA規格を基にしたトランザクションマネジャ(TM)との連携による,分散トランザクションが規定されています。分散トランザクションの概要を次に示します。

接続プールの場合と同様に,アプリケーションで使用するConnectionオブジェクトはXAConnectionクラスが生成します。ただし,PooledConnectionクラスやJDBCドライバが提供する,DataSourceクラスが生成するConnectionオブジェクトと比べて,次の点が異なります。

分散トランザクションに関連するクラスを次の表に示します。

表16‒12 分散トランザクションに関連するクラス

クラス

概 要

javax.sql.DataSource

  • トランザクション連携機能が提供します。

  • DB接続のとき,アプリケーションとのインタフェースとして使用します。

  • 通常,TMとの連携と,接続プールの制御は,このクラスで行われます。

  • 通常,JNDIに登録して使用します。

  • JDBCドライバが提供するDataSourceクラスとは別のものです。

javax.sql.XADataSource

  • JDBCドライバが提供します。

  • DB接続に必要な,接続情報設定/取得用のメソッドを使用できます。

  • 通常,アプリケーションから直接使用されることはなく,トランザクション連携機能によって使用されます。

  • 通常,JNDIに登録して使用します。

  • トランザクション連携機能は,このクラスのオブジェクトからXAConnectionオブジェクトを取得します。

javax.sql.XAConnection

  • JDBCドライバが提供します。

  • PooledConnectionクラスのサブクラスです。つまり,接続プールに関連するメソッドをすべて引き継ぎます。

  • 通常,アプリケーションから直接使用されることはなく,トランザクション連携機能によって使用されます。

  • トランザクション連携機能は,このクラスのオブジェクトをプールの対象とします。

  • トランザクション連携機能は,このクラスのオブジェクトからアプリケーションが使用する,Connectionオブジェクトを取得します。

javax.sql.ConnectionEventListener

  • トランザクション連携機能が提供します。

  • トランザクション連携機能は,接続の切断/SQLエラーなどをこのクラスのオブジェクトを通して検知することで,接続プールの契機とします。

javax.transaction.xa.XAResource

  • JDBCドライバが提供します。

  • TMで使用されるXA関連のメソッドを使用できます。

javax.transaction.xa.Xid

  • JDBCドライバ及びTMが提供します。

  • XAResourceクラスのメソッドの引数/戻り値として使用します。

表「分散トランザクションに関連するクラス」のクラスのインタフェース定義はJDKに標準で含まれていないため,トランザクション連携機能の開発の際には,JavaSoftのWebサイトから入手する必要があります。

表「分散トランザクションに関連するクラス」のJDBCドライバが提供するクラスの,パッケージ名称とクラス名称を次に示します。

パッケージ名称:JP.co.Hitachi.soft.HiRDB.JDBC

XADataSourceクラス名称:JdbhXADataSource

XAConnectionクラス名称:JdbhXAConnection

XAResourceクラス名称:JdbhXAResource

Xidクラス名称:JdbhXid

なお,JDBCドライバが提供するXADataSourceクラスの接続情報の設定は,JDBCドライバが提供するDataSourceクラスの接続情報の設定と同じです。