12.2. JDBC ドライバー

JBoss EAP でアプリケーションが使用するデータソースを定義する前に、最初に適切な JDBC ドライバーをインストールする必要があります。

12.2.1. コアモジュールとしての JDBC ドライバーのインストール

JDBC ドライバーをコアモジュールとしてインストールするには、最初に JDBC ドライバーをコアモジュールとして追加 し、datasources サブシステムで JDBC ドライバーを登録 する必要があります。

12.2.1.1. JDBC ドライバーをコアモジュールとして追加

以下の手順に従うと、管理 CLI を使用して JDBC ドライバーをコアモジュールとしてインストールすることができます。

  1. JDBC ドライバーをダウンロードします。

    データベースのベンダーから適切な JDBC ドライバーをダウンロードします。一般的なデータベースの JDBC ドライバーをダウンロードできる場所については、「JDBC ドライバーのダウンロードできる場所」を参照してください。

    JDBC ドライバーの JAR ファイルが ZIP または TAR アーカイブ内に含まれている場合は、必ずそのアーカイブを展開してください。

  2. JBoss EAP サーバーを起動します。
  3. 管理 CLI を起動します。

    $ EAP_HOME/bin/jboss-cli.sh
  4. module add 管理 CLI コマンドを使用して新しいコアモジュールを追加します。

    module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES

    たとえば、以下のコマンドは MySQL JDBC ドライバーモジュールを追加します。

    module add --name=com.mysql --resources=/path/to/mysql-connector-java-8.0.12.jar --dependencies=javax.api,javax.transaction.api
    重要

    module 管理 CLI コマンドを使用したモジュールの追加および削除は、テクノロジープレビューとしてのみ提供されます。このコマンドは、管理対象ドメインでの使用や、リモートによる管理 CLI への接続時には適していません。本番環境ではモジュールを手作業で 追加 および 削除 してください。

    テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。

    テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジープレビュー機能のサポート範囲」を参照してください。

    module --help を実行すると、このコマンドを使用したモジュールの追加および削除の詳細を表示できます。

次に、アプリケーションデータソースによって参照されるよう、JDBC ドライバーとして登録する必要があります。

12.2.1.2. JDBC ドライバーの登録

ドライバーが コアモジュールとしてインストール されたら、以下の管理 CLI コマンドを使用して JDBC ドライバーとして登録する必要があります。管理対象ドメインを実行している場合は、コマンドの前に /profile=PROFILE_NAME を付けてください。

/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME, driver-class-name=DRIVER_CLASS_NAME)
注記

driver-class-name パラメーターは、JDBC ドライバー jar が /META-INF/services/java.sql.Driver ファイルで複数の jar を定義する場合のみ必要です。

たとえば、MySQL 5.1.36 JDBC ドライバー JAR の /META-INF/services/java.sql.Driver ファイルは、以下の 2 つのクラスを定義します。

  • com.mysql.jdbc.Driver
  • com.mysql.fabric.jdbc.FabricMySQLDriver

この場合、 driver-class-name=com.mysql.jdbc.Driver で渡します。

たとえば、以下のコマンドは MySQL JDBC ドライバーを登録します。

/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.cj.jdbc.MysqlXADataSource, driver-class-name=com.mysql.jdbc.Driver)

アプリケーションのデータソースが JDBC ドライバーを参照できる状態になります。

12.2.2. JDBC ドライバーの JAR デプロイメントとしてのインストール

管理 CLI または管理コンソールを使用して JDBC ドライバーを JAR デプロイメントとしてインストールできます。JDBC 4 に対応するドライバーは、自動的に認識され、デプロイメント時に JDBC ドライバーとしてインストールされます。

以下の手順は、管理 CLI を使用した JDBC ドライバーのインストール方法になります。

注記

JDBC ドライバーをコアモジュールとしてインストールする方法が推奨されます。

  1. JDBC ドライバーをダウンロードします。

    データベースのベンダーから適切な JDBC ドライバーをダウンロードします。一般的なデータベースの JDBC ドライバーをダウンロードできる場所については、「JDBC ドライバーのダウンロードできる場所」を参照してください。

    JDBC ドライバーの JAR ファイルが ZIP または TAR アーカイブ内に含まれている場合は、必ずそのアーカイブを展開してください。

  2. JDBC ドライバーが JDBC 4 に対応していない場合は、「JDBC ドライバー JAR を JDBC 4 対応に更新」の手順を参照してください。
  3. JAR を JBoss EAP にデプロイします。

    deploy PATH_TO_JDBC_JAR
    注記

    管理対象ドメインでは、適切なサーバーグループを指定します。

    たとえば、以下のコマンドは MySQL JDBC ドライバーをデプロイします。

    deploy /path/to/mysql-connector-java-8.0.12.jar

    JBoss EAP サーバーログにメッセージが表示され、データソースを定義するときに使用されるデプロイされたドライバーの名前が表示されます。

    WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-8.0.12.jar

アプリケーションのデータソースが JDBC ドライバーを参照できる状態になります。

JDBC ドライバー JAR を JDBC 4 対応に更新

JDBC ドライバー JAR が JDBC 4 に対応していない場合、以下の手順に従ってデプロイ可能にすることができます。

  1. 空の一時ディレクトリーを作成します。
  2. META-INF サブディレクトリーを作成します。
  3. META-INF/services サブディレクトリーを作成します。
  4. META-INF/services/java.sql.Driver ファイルを作成し、JDBC ドライバーの完全修飾クラス名を示す 1 行を追加します。

    たとえば、MySQL JDBC ドライバーでは以下の行を追加します。

    com.mysql.jdbc.Driver
  5. JAR コマンドラインツールを使用して、この新しいファイルを JAR に追加します。

    jar \-uf jdbc-driver.jar META-INF/services/java.sql.Driver

12.2.3. JDBC ドライバーをダウンロードできる場所

下表は、JBoss EAP で使用される一般的なデータベースの JDBC ドライバーをダウンロードできる場所を示しています。

注記

これらのリンク先は他社の Web サイトであるため、Red Hat は管理しておらず、積極的に監視も行っていません。ご使用のデータベースの最新ドライバーについては、データベースベンダーのドキュメントおよび Web サイトを確認してください。

表12.1 JDBC ドライバーをダウンロードできる場所

ベンダーダウンロード場所

MySQL

http://www.mysql.com/products/connector/

PostgreSQL

http://jdbc.postgresql.org/

Oracle

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

IBM

http://www-01.ibm.com/support/docview.wss?uid=swg21363866

Sybase

jConnect JDBC ドライバーは、SAP ASE インストールの SDK の一部です。現在、このドライバーのみをダウンロードできるサイトはありません。

Microsoft

http://msdn.microsoft.com/data/jdbc/

12.2.4. ベンダー固有クラスへのアクセス

場合によっては、アプリケーションが JDBC API の一部ではないベンダー固有の機能を使用する必要があることがあります。このような場合、そのアプリケーションで依存関係を宣言してベンダー固有の API にアクセスすることができます。

警告

これは高度な使用法です。JDBC API に含まれない機能を必要とするアプリケーションのみこれを実装します。

重要

このプロセスは、再認証メカニズムを使用し、ベンダー固有のクラスにアクセスする場合に必要です。

MANIFEST.MF ファイルまたは jboss-deployment-structure.xml ファイルを使用するとアプリケーションの依存関係を定義できます。

JDBC ドライバーをコアモジュールとしてインストール していない場合は、インストールしてください。

MANIFEST.MF ファイルの使用
  1. アプリケーションの META-INF/MANIFEST.MF ファイルを編集します。
  2. Dependencies 行を追加し、モジュール名を指定します。

    たとえば、以下の行は com.mysql モジュールを依存関係として宣言します。

    Dependencies: com.mysql
jboss-deployment-structure.xml ファイルの使用
  1. アプリケーションの META-INF/ または WEB-INF/ フォルダーで jboss-deployment-structure.xml というファイルを作成します。
  2. dependencies 要素を使用してモジュールを指定します。

    たとえば、以下の jboss-deployment-structure.xml ファイル例は com.mysql モジュールを依存関係として宣言します。

    <jboss-deployment-structure>
      <deployment>
        <dependencies>
          <module name="com.mysql"/>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>

以下のコード例は MySQL API にアクセスします。

import java.sql.Connection;
...
Connection c = ds.getConnection();
if (c.isWrapperFor(com.mysql.jdbc.Connection.class)) {
    com.mysql.jdbc.Connection mc = c.unwrap(com.mysql.jdbc.Connection.class);
}
重要

接続は IronJacamar コンテナーによって制御されるため、ベンダー固有の API ガイドラインに従ってください。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。