8.6. データソース

データソースは、環境変数の一部の値を元にして自動的に作成されます。

最も重要な環境変数は、データソースの JNDI マッピングを定義する DB_SERVICE_PREFIX_MAPPING です。この変数で使用できる値は、POOLNAME-DATABASETYPE=PREFIX トリプレットのコンマ区切りリストです。 説明を以下に示します。

  • POOLNAME はデータソースの pool-name として使用されます。
  • DATABASETYPE は使用するデータベースドライバーです。
  • PREFIX は、データソースを設定するために使用される環境変数の名前に使用される接頭辞です。

8.6.1. データソースの JNDI マッピング

起動スクリプトは、イメージの起動時に実行される個別のデータソースを DB_SERVICE_PREFIX_MAPPING 環境変数に定義された各 POOLNAME-DATABASETYPE=PREFIX トリプレットに対して作成します。

注記

DB_SERVICE_PREFIX_MAPPING の最初の部分 (等号の前) は小文字である必要があります。

DATABASETYPE はデータソースのドライバーを決定します。

ドライバーの設定に関する詳細は、「モジュール、ドライバー、および汎用デプロイメント」を参照してください。JDK 8 イメージにはデフォルトで設定された postgresql および mysql のドライバーがあります。

警告

POOLNAME パラメーターには特殊文字を使用しないでください。

8.6.1.1. データベースドライバー

重要

Red Hat が提供する内部データソースドライバーを JBoss EAP for OpenShift イメージと使用する場合のサポートは、JDK 8 イメージストリームでは非推奨になりました。データベースベンダーから取得した JDBC ドライバーを JBoss EAP アプリケーションに使用することが推奨されます。

以下の内部データソースは、JBoss EAP for OpenShift の JDK 11 イメージでは提供されないようになりました。

  • MySQL
  • PostgreSQL

ドライバーのインストールに関する詳細は、「モジュール、ドライバー、および汎用デプロイメント」を参照してください。

JBoss EAP で JDBC ドライバーを設定するための詳細は、『設定ガイド』の「JDBC ドライバー」を参照してください。

各 JDK 8 イメージには、デプロイされた MySQL、PostgreSQL、および MongoDB データベースの Java ドライバーが含まれています。データソースは MySQL および PostgreSQL データベースのみに生成されます。

重要

JDK 11 イメージストリームには、MySQL、PostgreSQL、および MongoDB データベースのドライバーは含まれず、データソースは生成されません。

ドライバーのインストールに関する詳細は、「モジュール、ドライバー、および汎用デプロイメント」を参照してください。

注記

MongoDB は SQL データベースでないため、MongoDB データベースには JNDI マッピングは作成されません。

8.6.1.2. データソース設定環境変数

その他のデータソースプロパティーを設定するには、以下の環境変数を使用します。

重要

必ず POOLNAMEDATABASETYPE、および PREFIX の値を、以下の変数名と適切な値に置き換えてください。置き換え可能な値の説明は、本セクションと「データソース」に記載されています。

変数名説明

POOLNAME_DATABASETYPE_SERVICE_HOST

データソースの connection-url プロパティーで使用されるデータベースサーバーのホスト名または IP アドレスを定義します。

値の例: 192.168.1.3

POOLNAME_DATABASETYPE_SERVICE_PORT

データソースのデータベースサーバーのポートを定義します。

値の例: 5432

PREFIX_BACKGROUND_VALIDATION

true に設定すると、データベース接続は使用前にバックグラウンドスレッド周期的に検証されます。デフォルトは false で、validate-on-match がデフォルトで有効になります。

PREFIX_BACKGROUND_VALIDATION_MILLIS

background-validation データベース接続の検証メカニズムが有効である場合 (PREFIX_BACKGROUND_VALIDATION 変数が true に設定) 、検証の頻度をミリ秒単位で指定します。デフォルトは 10000 です。

PREFIX_CONNECTION_CHECKER

使用中の特定のデータベースの接続を検証するために使用される接続チェッカークラスを指定します。

値の例: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker

PREFIX_DATABASE

データソースのデータベース名を定義します。

値の例: myDatabase

PREFIX_DRIVER

データソースの Java データベースドライバーを定義します。

例の値: postgresql

PREFIX_EXCEPTION_SORTER

致命的なデータベース接続例外の発生後に適切に検出およびクリーンアップを行うために使用される例外ソータークラスを指定します。

例の値: org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter

PREFIX_JNDI

データソースの JNDI 名を定義します。デフォルトは java:jboss/datasources/POOLNAME_DATABASETYPE で、POOLNAME および DATABASETYPE は上記のトリプレットから取得されます。この設定は、デフォルトの生成された JNDI 名をオーバーライドする場合に便利です。

値の例: java:jboss/datasources/test-postgresql

PREFIX_JTA

非 XA データソースの Java Transaction API (JTA) オプションを定義します。XA データソースはすでにデフォルトで JTA 可能になっています。

デフォルト値は true です。

PREFIX_MAX_POOL_SIZE

データソースの最大プールサイズオプションを定義します。

値の例: 20

PREFIX_MIN_POOL_SIZE

データソースの最小プールサイズオプションを定義します。

値の例: 1

PREFIX_NONXA

データソースを非 XA データソースとして定義します。デフォルトは false です。

PREFIX_PASSWORD

データソースのパスワードを定義します。

値の例: password

PREFIX_TX_ISOLATION

データソースの java.sql.Connection トランザクション分離レベルを定義します。

値の例: TRANSACTION_READ_UNCOMMITTED

PREFIX_URL

データソースの接続 URL を定義します。

値の例: jdbc:postgresql://localhost:5432/postgresdb

PREFIX_USERNAME

データソースのユーザー名を定義します。

値の例: admin

OpenShift でこのイメージを実行している場合、POOLNAME_DATABASETYPE_SERVICE_HOST および POOLNAME_DATABASETYPE_SERVICE_PORT 環境変数は OpenShift アプリケーションテンプレートのデータベースサービス定義から自動的に設定されます。 その他の環境変数は、各 Pod テンプレートのコンテナー定義の env エントリーとして直接テンプレートで設定されます。

8.6.1.3. 例

これらの例は、DB_SERVICE_PREFIX_MAPPING 環境変数の値がどのようにデータソースの作成に影響するかを表しています。

8.6.1.3.1. 単一のマッピング

test-postgresql=TEST について考えてみます。

これは、java:jboss/datasources/test_postgresql 名でデータソースを作成します。さらに、パスワードやユーザー名などの必要な設定すべてが、TEST_USERNAMETEST_PASSWORD のように、TEST_ 接頭辞を持つ環境変数として提供されることが想定されます。

8.6.1.3.2. 複数のマッピング

複数のデータソースマッピングを指定できます。

注記

複数のデータソースマッピングは常にコンマで区切ります。

DB_SERVICE_PREFIX_MAPPING 環境変数の値として cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL を考慮します。

これは以下の 2 つのデータソースを作成します。

  1. java:jboss/datasources/test_mysql
  2. java:jboss/datasources/cloud_postgresql

TEST_MYSQL 接頭辞は、TEST_MYSQL_USERNAME のように MySQL データソースのユーザー名やパスワードなどの設定に使用できます。PostgreSQL データソースの場合は、CLOUD_USERNAME のように CLOUD_ 接頭辞を使用します。