JDBC Connector

2014 年 5 月にリリースされた Anypoint Studio (3.5.0 ランタイム) と、その新しい Database Connector では、​JDBC Connector が非推奨になりました​。JDBC Connector を使用するアプリケーションは、3.5.0 Enterprise ランタイムで引き続き機能しますが、このコネクタを Studio パレットでアプリケーションに追加することはできなくなりました。

新しく設計された機能を利用するには、​『Database Connector』​ のドキュメントを参照してください。

JDBC Connector は、トランスポートチャネルを実装して、Mule アプリケーションを JDBC 互換のデータベースに接続します。JDBC エンドポイントは、一方向のエクスチェンジパターンのインバウンドエンドポイントや、一方向のエクスチェンジパターンまたは要求-応答エクスチェンジパターンに設定されたアウトバウンドエンドポイントとして実装できます。

JDBC エンドポイントを使用して、データベースレコードで create、read、update、delete (通常、頭字語の CRUD で呼ばれる) 操作を実行します。EE バージョンを使用している場合、データベースに保存されているプロシージャー (新しいテーブルの動的な作成など) を呼び出すこともできます。

JDBC Connector では、マルチリソーストランザクションがサポートされています。マルチリソーストランザクションは、​『Database Connector』​ でもサポートされています。​『XA トランザクション』​を使用して、このユースケースを処理することも検討してください。

このコネクタのインストール方法

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックします。

  3. コネクタを検索して [Install (インストール)] をクリックします。

  4. 画面の指示に従ってコネクタをインストールします。

Studio の更新がある場合、右下隅にメッセージが表示されます。メッセージをクリックすると、更新をインストールできます。

Configuration (設定)

JDBC エンドポイント設定は、3 つのフェーズで構成されています。

  1. Mule フロー内の JDBC エンドポイントを配置する場所を決定し、パレットから、Mule フローを構成するプロセッサーのシーケンスの適切な場所に JDBC エンドポイントをドラッグします。

    1. JDBC エンドポイントをフローの先頭に配置する場合、[polling frequency (ポーリング頻度)] 項目で指定した間隔でクエリを実行してフローをトリガーするポーリングインバウンドエンドポイント (メッセージソースなど) として機能します。これは、インバウンドエンドポイントの一方向のエクスチェンジパターンに対応する必要があります。

      JDBC インバウンドエンドポイントは、一方向のエクスチェンジパターンにのみ設定できます。JDBC アウトバウンドエンドポイントは、一方向のエクスチェンジパターンまたは要求-応答エクスチェンジパターンのいずれかに設定できます。エクスチェンジパターンについての詳細は、​「Anypoint Studio の基礎」​を参照してください。
    2. JDBC プロセッサーをフローの中間または末尾に配置する場合、アウトバウンドエンドポイント (SQL コードを実行するプロセッサー) として機能します。SQL ステートメントによって、返されるデータ型が異なります。たとえば、クエリではマップのリスト、ストアドプロシージャー (EE でのみ使用可能) ではマップが返され、他の更新ステートメントでは何も返されません。

  2. メッセージフローキャンバスの JDBC アイコンをダブルクリックして開くことができる​プロパティ​ペインで、さまざまなタブの項目の値を入力して JDBC エンドポイントを設定します。

プロパティエディターには、5 つのタブがあります (詳細は下記参照)。

[General (一般)] タブ

DB1
プロパティ 説明

Display Name (表示名)

デフォルトは汎用エンドポイント名 (この場合は JDBC) です。エンドポイントの特定の役割が反映されるように ​Order Entry Endpoint​ などの表示名に変更します。表示名は英数字にする必要があります。

Exchange-Pattern (エクスチェンジパターン)

インバウンドまたはアウトバウンドエンドポイントを一方向 (デフォルト) に設定すると、JDBC エンドポイントは受信データをフローの次のプロセッサーに送信します。要求-応答 (アウトバウンド JDBC エンドポイントでのみ可能) に設定すると、エンドポイントはデータを送信する前に応答を待機します。

Query Key (クエリキー)

データベースにアクセスするときに使用するクエリを指定します。

SQL​ ​Statement (SQL ステートメント)

詳細は、​SQL Statement (SQL ステートメント)​を参照してください。

Transaction Type (トランザクション種別)

データベースリソースにアクセスする方法をドロップダウンリストから選択します。使用可能なオプションは、[No Transactions (トランザクションなし)]、[XA Transactions (XA トランザクション)]、[JDBC Transactions (JDBC トランザクション)] です。

Transaction Action (トランザクションアクション)

トランザクションでデータベースにアクセスする方法をドロップダウンリストから選択します。

Transaction Timeout (トランザクションタイムアウト)

アクションが完了するまで待機するタイムアウト (ミリ秒) を入力します。

Interact with External (外部とやりとり)

Mule が Mule の外部で始まるトランザクションとやりとりできるようにする場合は、チェックボックスをオンにします。たとえば、外部トランザクションがアクティブな場合、​BEGIN_OR_JOIN​ が追加されるため、​ALWAYS_BEGIN​ で例外がスローされます。

SQL Statement (SQL ステートメント)

フロー設定時に Mule Enterprise Edition ランタイムが指定された場合のにみ ​[General (一般)] タブ​の ​[Query (クエリ)]​ パネルがこのパネル (​下記参照​) に置き換わります。

sql_statement

このパネルを使用すると、SQL クエリやストアドプロシージャーを指定しやすくなります。ストアドプロシージャーを選択する手順は、次のとおりです。

  1. JDBC エンドポイント​のプロパティエディターにある ​[General (一般)]​ タブの ​[SQL Statement (SQL ステートメント)]​ パネルの ​[Key (キー)]​ テキストボックスの右側にある緑の「プラス」アイコンをクリックします。

  2. [Query (クエリ)]​ ダイアログボックス (​下記参照​) が表示されたら、識別するストアドプロシージャーのキーを ​[Query Key (クエリキー)]​ テキストボックス入力します。

  3. 大きな ​[Query (クエリ)]​ テキストボックスに、実行する SQL ステートメントを入力します。

  4. 項目のエントリに問題がなければ、​[Finish (完了)]​ をクリックしてコミットします。

    DB2

[Advanced (詳細)] タブ

DB3
プロパティ 説明

Address (住所)

このエンドポイントのアドレス (jdbc://getTest?type=1 など) を入力します。

Response Timeout (応答タイムアウト)

エンドポイントが応答を待機する必要がある時間 (ミリ秒) を指定します。デフォルトは ​1000​ ミリ秒です。

Encoding (エンコード)

ドロップダウンリストから、メッセージデータに使用する文字セット。(UTF-8 など)。

Disable Transport Transformer (トランスポートトランスフォーマーを無効化)

エンドポイントのデフォルトの応答トランスポートを​使用しない​場合、このボックスをオンにします。

MIME Type (MIME タイプ)

ドロップダウンリストから、このエンドポイントでサポートされる形式の 1 つを選択します。

Query Timeout (クエリタイムアウト)

(アウトバウンド JDBC エンドポイントにのみ適用)。​JDBC エンドポイントで SQL ステートメントから応答が返されるのを待機する時間 (ミリ秒) を指定します。

Polling Frequency (ポーリング頻度)

(インバウンド JDBC エンドポイントにのみ適用)。​受信メッセージをチェックする頻度を指定します。デフォルト値は ​1000​ ms です。

[References (参照)] タブ

DB4
プロパティ 説明

Endpoint Reference (エンドポイント参照)

ドロップダウンリストを使用して、以前に設定したグローバルエンドポイント参照を選択します。このエンドポイント種別のグローバル要素を作成していない場合、このウィンドウから ​[Add (追加)]​ をクリックして作成できます。以前に作成したグローバル要素を変更するには、​[Edit (編集)]​ をクリックします。

Connector Reference (コネクタリファレンス)

ドロップダウンリストを使用して、このエンドポイントの以前に設定したコネクタを選択します。このエンドポイント種別のコネクタを作成していない場合、このウィンドウから ​[Add (追加)]​ をクリックして作成できます。以前に作成したグローバル要素を変更するには、​[Edit (編集)]​ をクリックします。グローバル JDBC Connector の使用可能な種別を次に示します。

  • DB2 データソース

  • Derby データソース

  • MS SQL データソース

  • MySQL データソース

  • Oracle データソース

  • PostgreSQL データソース

Request Transformer References (要求トランスフォーマー参照)

トランスポートに送信される前に要求に適用する同期トランスフォーマーのリストを入力します。

Response Transformer References (応答トランスフォーマー参照)

トランスポートから返される前に応答に適用する同期トランスフォーマーのリストを入力します。

このコネクタには 1 つの追加プロパティがあります。現在、このプロパティは、Studio でコネクタリファレンスを設定するときにグローバルレベルでのみ設定できます。

プロパティ デフォルト値 説明

handleOutputResultSets

false

true に設定されていると、コールからストアドプロシージャーに結果セットが返されます。

このプロパティを ​true​ に設定するには、コネクタリファレンスを作成または編集して、グローバル要素設定の [Advanced (詳細)] タブを開き、​[Handle Output Result Sets (出力結果セットを処理)]​ の横にあるチェックボックスをオンにします。

[Queries (クエリ)] タブ

DB2

以下で構成されるこのエンドポイントの SQL クエリを入力できます。

  • キー

  • 値参照 (省略可能)

ヒント

  • DataMapper と SQL ステートメントの反復実行:​ DataMapper を使用して ArrayList をアプリケーションの JDBC エンドポイントにフィードする場合、Mule は DataMapper から出力される ArrayList の項目ごとに JDBC ステートメントを 1 回実行することに注意してください。これは想定される動作です。ペイロードがリストで、SQL ステートメントにパラメーターが含まれる場合、Mule は、挿入される値がリストに含まれていて、リストで BatchUpdateSqlStatementStrategy が使用されると想定します。この動作をさらに詳しく調べるには、次のクラスにアクセスします。

    • com.mulesoft.mule.transport.jdbc.sqlstrategy.EESqlStatementStrategyFactory​ (SQL およびペイロードの種別に基づいて SqlStatementStrategy を作成する)

    • com.mulesoft.mule.transport.jdbc.sqlstrategy.BatchUpdateSqlStatementStrategy

関連情報