スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

17.4.3 分散トランザクション

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

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

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

表17-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クラスのメソッドの引数/戻り値として使用します。

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

表17-12のJDBCドライバが提供するクラスの,パッケージ名称とクラス名称を次に示します。

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

XADataSourceクラス名称:JdbhXADataSource

XAConnectionクラス名称:JdbhXAConnection

XAResourceクラス名称:JdbhXAResource

Xidクラス名称:JdbhXid

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