第25章 Eclipse MicroProfile
25.1. Eclipse MicroProfile Config を使用した設定の管理 リンクのコピーリンクがクリップボードにコピーされました!
Eclipse MicroProfile Config は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。
テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジプレビュー機能のサポート範囲」を参照してください。
25.1.1. MicroProfile Config SmallRye サブシステム リンクのコピーリンクがクリップボードにコピーされました!
設定データは動的に変更でき、アプリケーションはサーバーを再起動せずに最新の設定情報にアクセスできる必要があります。Eclipse MicroProfile Config は設定データのポータブルな外部化を実現します。これにより、変更や再パッケージ化を必要とせずに、アプリケーションとマイクロサービスを複数の環境で実行するよう設定することができます。Eclipse MicroProfile Config 機能は、SmallRye Config を使用して JBoss EAP に実装され、microprofile-config-smallrye サブシステムによって提供されます。このサブシステムはデフォルトの JBoss EAP 7.2 設定に含まれています。
25.1.2. MicroProfile Config SmallRye サブシステムによってサポートされる ConfigSources リンクのコピーリンクがクリップボードにコピーされました!
形式や元の場所が異なることがある MicroProfile Config 設定プロパティーは、 org.eclipse.microprofile.config.spi.ConfigSource インターフェースの実装である ConfigSources によって提供されます。
MicroProfile Config 仕様は、設定値を取得するために、以下のデフォルト ConfigSource 実装を提供します。
-
System.getProperties()の使用。 -
System.getenv()の使用。 -
クラスパス上のすべての
META-INF/microprofile-config.propertiesから。
microprofile-config-smallrye サブシステムは、設定値を取得するために ConfigSource リソースの以下の追加タイプをサポートします。
- プロパティー から。
- ディレクトリーのファイル から。
-
ConfigSourceクラス から。 -
ConfigSourceProviderクラス から。
以下のセクションでは、管理 CLI を使用して microprofile-config-smallrye サブシステムを設定しますが、管理コンソールを使用することもできます。 管理コンソールで Configuration
MicroProfile Config SmallRye サブシステムの設定に使用できる属性のリストは「MicroProfile Config SmallRye サブシステムの属性」を参照してください。
プロパティーからの ConfigSource 設定の取得
ConfigSource のアクセス用にプロパティーを直接保存するには、config-source 属性を追加し、properties をリストとして指定します。
以下の管理 CLI コマンドは property1 および property2 プロパティーの設定データが含まれる ConfigSource を作成します。
/subsystem=microprofile-config-smallrye/config-source=props:add(properties={property1=value1,property2=value2})
/subsystem=microprofile-config-smallrye/config-source=props:add(properties={property1=value1,property2=value2})
このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。
ディレクトリーからの ConfigSource 設定の取得
ConfigSource を作成してディレクトリーのファイルからプロパティーを読み取りするには、config-source 属性を追加して、ファイルが含まれるディレクトリーを指定します。dir ディレクトリーの各ファイルの名前はプロパティーの名前で、ファイルの内容はプロパティーの値になります。
以下の CLI コマンドは、/etc/config/numbers-app/ ディレクトリーのファイルから設定プロパティーを読み取る ConfigSource を作成します。
/subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=/etc/config/numbers-app})
/subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=/etc/config/numbers-app})
このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
<config-source name="file-props">
<dir path="/etc/config/numbers-app"/>
</config-source>
</subsystem>
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
<config-source name="file-props">
<dir path="/etc/config/numbers-app"/>
</config-source>
</subsystem>
この構造は、OpenShift の ConfigMaps によって使用される構造に対応します。dir の値は、OpenShift または Kubernetes の ConfigMap 定義にある mountPath に対応します。
JBoss EAP にデプロイされたすべてのアプリケーションは、ディレクトリーに保存されたプロパティーにプログラムを使用してアクセスできます。
/etc/config/numbers-app/ ディレクトリーに以下の 2 つのファイルが含まれていることを仮定します。
-
num.size: このファイルには5が値として含まれています。 -
num.max: このファイルには100が値として含まれています。
以下のコード例では、num.size は 5 を返し、num.max は 100 を返します。
ConfigSource クラスからの ConfigSource 設定の取得
カスタムの org.eclipse.microprofile.config.spi.ConfigSource 実装クラスを作成および設定して、設定値のソースを提供することができます。
以下の管理 CLI コマンドは、org.example という名前の JBoss Module によって提供される、org.example.MyConfigSource という名前の実装クラスの ConfigSource を作成します。
/subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})
/subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})
このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
<config-source name="my-config-source">
<class name="org.example.MyConfigSource" module="org.example"/>
</config-source>
</subsystem>
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
<config-source name="my-config-source">
<class name="org.example.MyConfigSource" module="org.example"/>
</config-source>
</subsystem>
この ConfigSource クラスによって提供されるプロパティーはすべての JBoss EAP デプロイメントで使用できます。
JBoss EAP サーバーにグローバルモジュールを追加する方法は「グローバルモジュールの定義」を参照してください。
ConfigSourceProvider クラスからの ConfigSource 設定の取得
複数の ConfigSource インスタンスの実装を登録する、カスタムの 実装クラスを作成および設定できます。
org.eclipse.microprofile.config.spi.ConfigSourceProvider
以下の管理 CLI コマンドは、org.example という名前の JBoss Module によって提供される、org.example.MyConfigSourceProvider という名前の実装クラスの config-source-provider を作成します。
/subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})
/subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})
このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
<config-source-provider name="my-config-source-provider">
<class name="org.example.MyConfigSourceProvider" module="org.example"/>
</config-source-provider>
</subsystem>
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
<config-source-provider name="my-config-source-provider">
<class name="org.example.MyConfigSourceProvider" module="org.example"/>
</config-source-provider>
</subsystem>
ConfigSourceProvider 実装によって提供されるプロパティーはすべての JBoss EAP デプロイメントで使用できます。
JBoss EAP サーバーにグローバルモジュールを追加する方法は「グローバルモジュールの定義」を参照してください。
25.1.3. ConfigSources にアクセスするアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Java コードで MicroProfile Config にアクセスするアプリケーションは、CDI を有効にする必要があります。 これには、デプロイメントアーカイブに META-INF/beans.xml または WEB-INF/beans.xml ファイルが含まれるようにするか、CDI bean アノテーションが含まれるようにします。
CDI の詳細は、JBoss EAP『開発ガイド』の「コンテキストおよび依存関係の挿入 (CDI)」を参照してください。