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
パラメーターには特殊文字を使用しないでください。
Red Hat が提供する内部データソースドライバーを JBoss EAP for OpenShift イメージと使用する場合のサポートは、非推奨になりました。Red Hat では、データベースベンダーから取得した JDBC ドライバーを JBoss EAP アプリケーションに使用することをお勧めします。
以下の内部データソースは、JBoss EAP for OpenShift イメージでは提供されないようになりました。
- MySQL
- PostgreSQL
ドライバーのインストールに関する詳細は、モジュール、ドライバー、および汎用デプロイメント を参照してください。
JBoss EAP で JDBC ドライバーを設定するための詳細は、設定ガイドの JDBC ドライバー を参照してください。
プロビジョニングされたサーバーに追加する場合は、カスタムレイヤーを作成してこれらのドライバーおよびデータソースをインストールすることもできます。
8.6.1.1. データソース設定環境変数
その他のデータソースプロパティーを設定するには、以下の環境変数を使用します。
必ず POOLNAME
、DATABASETYPE
、および PREFIX
の値を、以下の変数名と適切な値に置き換えてください。置き換え可能な値の説明は、本セクションと データソース に記載されています。
変数名 | 説明 |
---|---|
POOLNAME_DATABASETYPE_SERVICE_HOST |
データソースの
値の例: |
POOLNAME_DATABASETYPE_SERVICE_PORT | データソースのデータベースサーバーのポートを定義します。
値の例: |
PREFIX_BACKGROUND_VALIDATION |
|
PREFIX_BACKGROUND_VALIDATION_MILLIS |
|
PREFIX_CONNECTION_CHECKER | 使用中の特定のデータベースの接続を検証するために使用される接続チェッカークラスを指定します。
値の例: |
PREFIX_DATABASE | データソースのデータベース名を定義します。
値の例: |
PREFIX_DRIVER | データソースの Java データベースドライバーを定義します。
例の値: |
PREFIX_EXCEPTION_SORTER | 致命的なデータベース接続例外の発生後に適切に検出およびクリーンアップを行うために使用される例外ソータークラスを指定します。
例の値: |
PREFIX_JNDI |
データソースの JNDI 名を定義します。デフォルトは
値の例: |
PREFIX_JTA | XA 以外のデータソースの Jakarta Transactions オプションを定義します。XA データソースはデフォルトで機能する Jakarta Transactions です。
デフォルト値は |
PREFIX_MAX_POOL_SIZE | データソースの最大プールサイズオプションを定義します。
値の例: |
PREFIX_MIN_POOL_SIZE | データソースの最小プールサイズオプションを定義します。
値の例: |
PREFIX_NONXA |
データソースを非 XA データソースとして定義します。デフォルトは |
PREFIX_PASSWORD | データソースのパスワードを定義します。
値の例: |
PREFIX_TX_ISOLATION | データソースの java.sql.Connection トランザクション分離レベルを定義します。
値の例: |
PREFIX_URL | データソースの接続 URL を定義します。
値の例: |
PREFIX_USERNAME | データソースのユーザー名を定義します。
値の例: |
OpenShift でこのイメージを実行している場合、POOLNAME_DATABASETYPE_SERVICE_HOST
および POOLNAME_DATABASETYPE_SERVICE_PORT
環境変数は OpenShift アプリケーションテンプレートのデータベースサービス定義から自動的に設定されます。 その他の環境変数は、各 Pod テンプレートのコンテナー定義の env
エントリーとして直接テンプレートで設定されます。
8.6.1.2. 例
これらの例は、DB_SERVICE_PREFIX_MAPPING
環境変数の値がどのようにデータソースの作成に影響するかを表しています。
8.6.1.2.1. 単一のマッピング
値 test-postgresql=TEST
について考えてみます。
これは、java:jboss/datasources/test_postgresql
名でデータソースを作成します。さらに、パスワードやユーザー名などの必要な設定すべてが、TEST_USERNAME
や TEST_PASSWORD
のように、TEST_
接頭辞を持つ環境変数として提供されることが想定されます。
8.6.1.2.2. 複数のマッピング
複数のデータソースマッピングを指定できます。
複数のデータソースマッピングは常にコンマで区切ります。
DB_SERVICE_PREFIX_MAPPING
環境変数の値として cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL
を考慮します。
これは以下の 2 つのデータソースを作成します。
-
java:jboss/datasources/test_mysql
-
java:jboss/datasources/cloud_postgresql
TEST_MYSQL
接頭辞は、TEST_MYSQL_USERNAME
のように MySQL データソースのユーザー名やパスワードなどの設定に使用できます。PostgreSQL データソースの場合は、CLOUD_USERNAME
のように CLOUD_
接頭辞を使用します。