Access Keys:
Skip to content (Access Key - 0)

JDBCプロバイダは、リレーショナルデータベースへ接続する場合に使えます。簡単な構成の表の読書きと、読み込んだ行の確認を行うことができます。

このトランスポート・プロバイダのJavadocはここにあります。
ソースコードはここにあります。

JDBCコネクタのプロパティ

プロパティ 説明 デフォルト 必須
jndiContext 利用するJNDIコンテキスト。コネクタに直接設定するか、jndiInitialFactory, jndiProviderUrlとproviderPropertiesプロパティから作成されます。   ×
jndiInitialFactory オブジェクトを取得する場合に使う初期コンテキスト・ファクトリ。例えばJNDIコンテキストからのDataSource。   ○ (JNDIを利用する場合)
jndiProviderUrl JNDIプロバイダのURL。   ○ (JNDIを利用する場合)
providerProperties 初期コンテキストに渡すその他のプロパティ。 java.naming.usernamejava.naming.password プロパティはここに設定することができます。   ×
dataSourceJndiName JNDIで設定されている、利用するデータ・ソース。   ○ (JNDIを利用する場合)
dataSource 利用するJDBCデータソース。コネクタに直接設定した場合は、JNDIプロパティは不要です。XAトランザクションを利用した場合は、XADataSourceオブジェクトは必須です。   × (JNDIを利用する場合)
pollingFrequency データベースをポーリングのポーリング間隔(ミリ秒)   ×
queries SQL文のMap。SQL文をエンドポイントに設定することもできます。(以下を参照)   ×
resultSetHandler 検索結果に返す、ResultSetHandlerの完全修飾クラス名。このオブジェクトに付いての詳細は例題を参照してください。 org.apache.commons.dbutils.handlers. MapListHandler ×
queryRunner 検索を実行する場合のQueryRunnerの完全修飾クラス名。このオブジェクトの詳細に付いては例題を参照してください。 org.apache.commons.dbutils.QueryRunner ×

JDBCエンドポイント・プロパティ

プロパティ 説明 デフォルト 必須
queries このエンドポイントが対応するSQL文のMap。コネクタのSQL文を上書きします。   No

データ処理用の設定

SQL文はコネクタ又はエンドポイントに指定することができます。
SQL文はMapに記述され、名前をキーとします。
名前はエンドポイントのアドレスから取得されます。

3種類のデータ処理があります:

  • read 処理: データを選択する select 処理。
  • ack 処理: 読み込んだ行毎に実行する処理。例えば updatedelete 処理。この処理はread処理と関連しています。read処理に対応したack処理はread処理に接尾辞として添えられた{{.ack}}で識別されます。
  • write 処理: 多くのい場合は、 insert 処理です。出力エンドポイントで使えます。

簡単なパラメータ検索を行うことも可能です。パラメータは{{${...}}}パターンに囲みます。検索が実行された場合は以下のようにパラメータに値が埋め込まれます:

  • パラメータがエンドポイントURIで定義されたか
  • 入力がある場合(ack及び書き込み検索の場合)、入力のJavaビーンとして式を評価する。

ack検索お場合は、入力はUMOMessageに送られるペイロードと定義されます。取得した特定のれ何時にアクセスする場合は、メッセージで評価される式、${特例の列}を使います。

書き込み検索の場合は、入力はUMOMessageと定義されます。全ペイロードをアクセスする場合は、メッセージを評価する式、${payload}を使います。

特別な式{{${NOW}}}は、現在の日時からtimestampを作成します。

名前なしクエリー

クエリーを設定せずにSQL文を実行することができます。特定したエンドポイント(送信又は受信)で、実行するクエリーをURIのアドレスに記述することができます。

UMOMessage msg = eventContext.receiveEvent("jdbc://SELECT * FROM TEST", 0);

eventContext.sendEvent(msg, "jdbc://INSERT INTO TEST(TYPE, DATA) VALUES(1, ${payload})");

JDBCコネクタの使い方

コネクタの生成

JDBCコネクタを利用する前に、ESB MuleのXML設定ファイルにコネクタを設定します。

Springframeworkで設定されたdataSourceを利用する場合は以下のように書きます:

<connector name="jdbcConnector" className="org.mule.providers.jdbc.JdbcConnector">
    <properties>
        <container-property name="dataSource" reference="myDataSource"/>
    </properties>
</connector>

Springframeworkを使えば、簡単にDataSourceを作成することができます:
xapool:

<bean id="myDataSource"
      class="org.enhydra.jdbc.standard.StandardDataSource"
      destroy-method="shutdown">
    <property name="driverName"><value>org.hsqldb.jdbcDriver</value></property>
    <property name="url"><value>jdbc:hsqldb:file:db/test</value></property>
</bean>

又は、JNDIリポジトリからdataSourceを取得する場合は、以下のように書きます:

<connector name="jdbcConnector" className="org.mule.providers.jdbc.JdbcConnector">
    <properties>
        <property name="jndiInitialFactory" value="..."/>
        <property name="jndiProviderUrl" value="..."/>
        <property name="dataSourceJndiName" value="..."/>
    </properties>
</connector>

又は、より簡単に設定をするために、JNDIコンテナを使うこともできます。

クエリの作成

エンドポイントで使うSQL文は、コネクタ又はエンドポイントに設定します。

<map name="queries">
    <property name="getTest"
        value="SELECT ID, TYPE, DATA, ACK, RESULT FROM TEST WHERE TYPE =
                ${type} AND ACK IS NULL"/>
    <property name="getTest.ack"
        value="UPDATE TEST SET ACK = ${NOW} WHERE ID = ${id} AND TYPE =
                ${type} AND DATA = ${data}" />
    <property name="writeTest"
        value="INSERT INTO TEST(ID, TYPE, DATA, ACK, RESULT) VALUES(NULL,
                ${type}, ${payload}, NULL, NULL)" />
</map>

コンポーネントの作成

リシーバー:

<mule-descriptor name="..."
                 implementation="..."
                 inboundEndpoint="jdbc://getTest?type=1"
                 outboundEndpoint="..."/>

ディスパッチャ:

<mule-descriptor name="..."
                 implementation="..."
                 inboundEndpoint="..."
                 outboundEndpoint="jdbc://writeTest?type=1" />
Adaptavist Theme Builder (3.3.2-conf2.10) Powered by Atlassian Confluence 2.10, the Enterprise Wiki.
Free theme builder license