第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.3 設定に含まれています。
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 → Subsystems → MicroProfile Config と選択し、表示 をクリックすると、設定できます。
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})
このコマンドを実行すると、microprofile-config-smallrye
サブシステムに以下の XML 設定が指定されます。
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source name="props"> <property name="property1" value="value1"/> <property name="property2" value="value2"/> </config-source> </subsystem>
ディレクトリーからの 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})
このコマンドを実行すると、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>
この構造は、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
を返します。
@Inject @ConfigProperty(name = "num.size") int numSize; @Inject @ConfigProperty(name = "num.max") int numMax;
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})
このコマンドを実行すると、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>
この 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})
このコマンドを実行すると、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>
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)を参照してください。