データベース接続の設定

データベースコネクタは、JDBC ドライバを使用できるあらゆるデータベースに接続できます。最も一般的なデータベースに容易に接続できるように、このコネクタにはさまざまな接続種別が含まれます。

このセクションの例では、接続種別の設定を示します。また、グローバルデータソースへの接続、JDBC ドライバの設定、接続プーリングの設定など、より高度なユースケースも示します。

MySQL への接続

<db:config name= "dbConfig">
  <db:my-sql-connection host="0.0.0.0" port="3306" user="Max" password="POWERS" database="someSchema"/>
</db:config>

Oracle への接続

<db:config name="dbConfig">
  <db:oracle-connection host="192.168.99.100" port="1521" instance="xe" user="system" password="oracle" />
</db :config >

Derby への接続

<db:config name= "dbConfig" >
  <db:derby-connection url=" jdbc:derby:muleEmbeddedDB;create=true" />
</db:config >

汎用データベースへの接続

汎用接続種別は、次のような場合に役立ちます。

  • 接続するデータベースに対して MuleSoft が特定の接続種別を提供していない場合。

  • サポートされるいずれかのデータベースに接続するが、使用するカスタムオプションが接続種別に含まれない場合。

汎用接続で必要な情報は以下のみです。

  • ドライバクラス名

  • 接続 URL

次の例は、H2 データベースへの接続方法を示しています。

<db:config name="dbConfig">
    <db:generic-connection driverClassName="org.h2.Driver" url="jdbc:h2:file:/tmp/datasenseDB"/>
</db:config>

グローバル DataSource への接続

汎用接続をセットアップすると、コネクタは、提供された情報を使用して JDBC DataSource を生成します。場合によって、ユーザ独自の DataSource を作成することもできます。これを行うには、Spring モジュールで定義された DataSource の参照を可能にする data-source-connection 要素がデータベース設定でサポートされている必要があります。

グローバル DataSource への接続方法

  1. 次のように、Bean が含まれる Spring 設定ファイルを作成します。

    <bean id="jdbcDataSource" class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown">
       <property name="driverName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
       <property name="url" value="jdbc:derby:muleEmbeddedDB;create=true"/>
    </bean>

    上の例では、Derby データベースに接続するカスタム enhydra DataSource を作成します。

  2. Spring モジュールを使用して Spring 設定ファイルを参照し、接続内で DataSource を使用します。

    <spring:config name="datasource" files="datasource-config.xml" />
    
    <db:config name="dbConfig">
       <db:data-source-connection dataSourceRef="jdbcDataSource" />
    </db:config>

JDBC ドライバの設定

接続の設定方法はわかりました。次に、JDBC ドライバを指定しましょう。次の例は、MySQL データベースのドライバの指定方法を示しています。

手順はすべてのデータベースで同じです。唯一の違いは、ドライバの連動関係が必要かどうかです。

  1. プロジェクトの pom.xml ファイルで、ドライバを連動関係として追加します。

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
  2. pom.xml を使用して、Mule Runtime でドライバの連動関係を Database コネクタに公開するようにします。次に例を示します。

    <build>
        <plugins>
            <!-- Only used to declare the shared libraries-->
            <plugin>
                <groupId>org.mule.tools.maven</groupId>
                <artifactId>mule-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <sharedLibraries>
                        <sharedLibrary>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                        </sharedLibrary>
                    </sharedLibraries>
                </configuration>
            </plugin>
        </plugins>
    </build>

接続プールの設定

接続の確立には、コネクタ、RDBMS ネットワーク、および処理オーバーヘッドの点でコストがかかります。解決策は、いくつかの使用可能な接続を提供する接続プールを構築することです。この目的では、標準の Mule <pooling-profile> 要素ではなく <db:pooling-profile> 要素を使用します。

次の例は、db:pooling-profile 要素の使用方法を示しています。

<db:config name="dbConfig">
    <db:my-sql-connection database="mozart_test" host="${host}" password="${password}" port="${port}" user="${user}">
        <db:pooling-profile acquireIncrement="1" maxPoolSize="5" maxWait="0" maxWaitUnit="SECONDS" minPoolSize="0" preparedStatementCacheSize="5"/>
    </db:my-sql-connection>
</db:config>

グローバルデータソース参照以外のすべての接続設定要素がプーリングプロファイルを受け付けます。JDBC では、プーリングはデータソースレベルで実行されます。プーリングを実行するには、グローバルデータソースを設定する必要があります。ソフトウェアではこれをその場で追加できません。

FTP や SFTP などの他のコネクタとは異なり、標準の <pooling-profile> ではなく <db:pooling-profile> 要素が使用されます。これは、汎用要素では意味をなさない preparedStatementCacheSize などの特別なプーリング属性がデータベースにあるためです。

接続種別のパラメータおよび機能についての詳細は、データベースコネクタテクニカルリファレンスを参照してください。

TNS 名を使用した Oracle データベース接続の作成

tnsnames.ora ファイルに依存する Oracle 接続を作成するには、データベースコネクタを使用して、コネクタ設定で設定の詳細を指定できます。これを機能させるには、http://download.oracle.com/otn/utilities_drivers/jdbc/11204/ojdbc6.jar[ojdbc6.jar] を 連動関係としてプロジェクトのビルドパスに追加する必要があります。

注意: Mule インスタンスとデータベース自体との間にファイアウォールが存在する場合、TNS 接続で ENABLE=BROKEN パラメータを使用してキープアライブを有効にします。 設定しない場合、非アクティブタイマーの期限切れにより接続のトラフィックがドロップする可能性があります。

たとえば、Anypoint Studio で、データベースコネクタの [General (一般)] タブでデータベース URL を設定し、この URL を指定できます。

jdbc:oracle:thin:${oracle.user}/${oracle.password}@(DESCRIPTION=(ENABLE=BROKEN)(FAILOVER=ON)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=${oracle.host1})(PORT=${oracle.port}))(ADDRESS=(PROTOCOL=TCP)(HOST=${oracle.host2})(PORT=${oracle.port}))(CONNECT_DATA=(SERVICE_NAME=${oracle.service})))

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub