Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


2.2.10 JDBC Proxy Driverの使用(SQL-Participant限定)

JDBC Proxy Driverを使用するアプリケーションの開発方法について説明します。

JDBC Proxy Driverを使用するアプリケーション、Entity-Serviceのアプリケーションで実装してください。

JDBC Proxy Driverを使用するには、HMP-PCTOのパラメタの設定が必要です。パラメタの設定方法については、「7. パラメタ」を参照してください。

〈この項の構成〉

(1) ライブラリの組み込み

JDBC Proxy Driverを使用するには、hmppcto-jdbc-proxy-driverライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto: hmppcto-jdbc-proxy-driver:<version>'
}

(2) コーディング例

JDBC Proxy Driverは、各ベンダが提供するJDBC Driverを使用する場合と同様にコーディングして使用します。Datasourceを使用してConnectionインスタンスを取得して、任意のSQLを実行します。JDBC Proxy Driverは、同一のトランザクションブランチで初めてgetConnection()が実行されたときにParticipantをトランザクションに参加させます。そのため、アプリケーションでConnectionインスタンスをプールして別のトランザクションブランチでConnectionインスタンスを再利用しないでください。サービスごとにDatasourceを使用してConnectionインスタンスを取得してください。

@Autowired
DataSource ds;                                   // JDBC Proxy DriverのDataSourceを挿入
Connection con = ds.getConnection();             // Connectionを取得
con.…                                           // 任意のSQLを実行

(3) エラーハンドリング

JDBC Proxy Driverは、JDBC Driverの仕様に準拠した例外を送出します。各ベンダのJDBC Driverを直接使用している場合と同様にエラーハンドリングできます。

ParticipantでJDBC Driverを実行時に発生した例外のSQLState、例外コード、メッセージ、例外チェーンなどの情報は、ParticipantからEntity-Serviceに応答し、そのままアプリケーションに送出します。

Entity-ServiceとParticipantの間の通信障害など、JDBC Proxy Driver固有の例外は、java.sql.SQLExceptionのサブクラスとして実装しているため、各ベンダのJDBC Driverが送出する例外と同様にエラーハンドリングできます。JDBC Proxy Driver固有の例外の詳細については、「6. API」を参照してください。

取扱説明書「HMP-PCTOテクニカルガイド(SQL-Participant編)」の、DBアクセス機能のRDBMSごとの注意事項も確認してください。

(4) 実行できるSQL

JDBC Proxy Driverを使用して実行できるSQLは、XA接続時に実行可能なSQLです。これは、SQL-participantがDBとの接続にXA接続を使用しているためです。XA接続時に実行可能なSQLについては、使用するDBのマニュアルを参照してください(なお、DBの多くは、XA接続時に定義系SQLは使用できません)。