21. マイクロサービスアプリケーション

マイクロサービスアプリケーションに関する設定について説明します。

21.1. MicroProfile Config

MicroProfile Configに関する設定について説明します。

21.2. MicroProfile Fault Tolerance

MicroProfile Fault Toleranceに関する設定について説明します。

21.2.1. MicroProfile Fault Tolerance 設定項目一覧

各項目は、MicroProfile Config を利用して設定します。設定方法や、設定値の優先順位等、詳細は、[ アプリケーション開発 > その他のアプリケーション > マイクロサービスアプリケーションの開発 > MicroProfile Config ] を参照してください。

MicroProfile Fault Tolerance 設定項目一覧
設定名 説明 既定値
MP_Fault_Tolerance_NonFallback_Enabled
(mpft.nonFallbackEnabled)
Fallback以外のアノテーション使用可否設定です。
mpft.nonFallbackEnabledはWebOTX独自設定名で、両方指定した場合はEclipse MicroProfile 仕様準拠の設定名であるMP_Fault_Tolerance_NonFallback_Enabledの設定値を優先します。
true(使用する)
MP_Fault_Tolerance_Metrics_Enabled
(mpft.metricsEnabled)
MicroProfile Metricsを利用したメトリクス情報の取得可否設定です。
MicroProfile Metricsについては、[ アプリケーション開発 > その他のアプリケーション > マイクロサービスアプリケーションの開発 > MicroProfile Metrics ] を参照してください。
mpft.metricsEnabledはWebOTX独自設定名で、両方指定した場合はEclipse MicroProfile 仕様準拠の設定名であるMP_Fault_Tolerance_Metrics_Enabledの設定値を優先します。
true(使用する)
mp.fault.tolerance.interceptor.priority
(mpft.interceptorPriority)
Fault Toleranceインターセプタの優先度です。
ユーザ独自のインターセプタが存在する際に本設定を指定することで、インターセプタの実行順序をコントロールすることが可能です。
mpft.interceptorPriorityはWebOTX独自設定名で、両方指定した場合はEclipse MicroProfile 仕様準拠の設定名であるmp.fault.tolerance.interceptor.priorityの設定値を優先します。
4010
mpft.appName メトリクス情報のタグ「_app」に付与するAP名です。
複数アプリケーションを配備する際にアプリケーション毎に本設定を指定することで、アプリケーション毎にメトリクス情報を判別することが可能です。
指定しない場合は「_app」タグ自体を付与しません。
無し
[<クラス名>/][<メソッド名>/]<アノテーション名>/<パラメータ> 各Fault Toleranceアノテーションのパラメータをオーバライドする設定です。
クラス名やメソッド名を指定した場合はオーバーライドする範囲を限定します。
なお、あるパラメータに対して、範囲の異なる複数の指定が行われた場合、より範囲の狭い方を優先します。
無し
[<クラス名>/][<メソッド名>/]<アノテーション名>/enabled 各Fault Toleranceアノテーションの使用可否設定です。値にはtrue(使用可)/false(使用不可)を指定します。
クラス名やメソッド名を指定した場合は使用可否設定する範囲を限定します。
なお、あるアノテーションに対して、範囲の異なる複数の指定が行われた場合、より範囲の狭い方を優先します。
無し

21.3. MicroProfile Health Check

MicroProfile Health Checkに関する設定について説明します。

21.4. MicroProfile JWT Authentication

MicroProfile JWT Authenticationに関する設定について説明します。

21.4.1. MicroProfile JWT Authentication 設定項目一覧

各項目は、MicroProfile Config を利用して設定します。設定方法や、設定値の優先順位等、詳細は、[ アプリケーション開発 > その他のアプリケーション > マイクロサービスアプリケーションの開発 > MicroProfile Config ] を参照してください。

MicroProfile JWT Authentication 設定項目一覧
設定名 説明 既定値
mp.jwt.verify.publickey
(mpjwt.publicKeyPemEnc)
JWT の暗号化と復号化で利用する、認証サーバの公開鍵情報(鍵生成ツールで作成した公開鍵(文字列))を指定します。
mpjwt.publicKeyPemEnc は、旧バージョンでのプロパティ名で、本バージョンにおいても利用可能です。 なお、mp.jwt.verify.publickey と mpjwt.publicKeyPemEnc の両方の指定があり、mpjwt.publicKeyPemEnc に空文字以外の有効な値が指定されていた場合は、mpjwt.publicKeyPemEnc の値が優先されます。 本項目、および、mp.jwt.verify.publickey.location が指定されていない場合は、アプリケーション内の、 /META-INF/MP-JWT-SIGNER ファイルを読み込みます。
'mp.jwt' で始まる設定名は、Eclipse MicroProfile 仕様です。
'mpjwt'で始まる設定名は、WebOTX固有の設定名です。
無し
mp.jwt.verify.issuer
(mpjwt.issuedBy)
セキュリティ発行者情報を指定します。 mpjwt.issuedBy は、旧バージョンでのプロパティ名で、本バージョンにおいても利用可能です。 なお、mp.jwt.verify.issuer と、mpjwt.issuedBy の両方の指定があり、mpjwt.issuedBy に空文字以外の有効な値が指定されていた場合は、mpjwt.issuedBy の値が優先されます。 本項目の指定が無い場合は、アプリケーション内の、/META-INF/MP-JWT-ISSUER ファイルを読み込みます。
'mp.jwt' で始まる設定名は、Eclipse MicroProfile 仕様です。
'mpjwt'で始まる設定名は、WebOTX固有の設定名です。
無し
mp.jwt.verify.publickey.location 公開鍵情報の位置を指定します。相対パス、file://、http://、その他のスキームが利用可能です。 本項目、および、mp.jwt.verify.publickey (mpjwt.publicKeyPemEnc) が指定されていない場合は、 アプリケーション内の、/META-INF/MP-JWT-SIGNER ファイルを読み込みます。 無し
mp.jwt.verify.publickey.algorithm (smallrye.jwt.verify.algorithm (*1)) 公開鍵の署名アルゴリズムを指定します。指定可能な値は、RS256、RS384、RS512、ES256、ES384、ES512、HS256、HS384、HS512、PS256、PS384、PS512のいずれかです。 RS256
mp.jwt.decrypt.key.location 秘密鍵の外部または内部の場所を指定します。 無し
mp.jwt.token.header (smallrye.jwt.token.header (*1)) JWT トークンを含むヘッダを指定します。指定可能な値は、Authorization、Cookie のいずれかです。 Authorization
mp.jwt.token.cookie (smallrye.jwt.token.cookie (*1)) JWT トークンを含むクッキー名を指定します。mp.jwt.token.header にCookieが指定されていない場合、この値は無視されます。 Bearer
mp.jwt.verify.audiences (smallrye.jwt.verify.aud (*1)) audクレームに含めることのできるオーディエンスを指定します。 カンマ (,) 区切りで複数指定することが可能です。本プロパティを設定することにより、JWTトークンのaudクレームに、指定されたオーディエンスのうち、少なくとも1つ含まれることが検証されます。 無し
smallrye.jwt.verify.key.location 公開鍵、または、秘密鍵の位置を指定します。本プロパティが設定されている場合、mp.jwt.verify.publickey.locationの設定は無視されます。 無し
smallrye.jwt.always-check-authorization mpjwt.token.header に 'Cookie' が指定されており、mpjwt.token.cookie に指定した名前の Cookie が存在しない場合に、 Authorization ヘッダをチェックするかどうかを指定します。
true : チェックする
false : チェックしない
false
smallrye.jwt.token.kid 署名に使う鍵を識別するための、鍵IDを指定します。 これが設定されている場合、JWT トークンや、JWK (JSON Web Key) には、kid ヘッダの設定が必要となります。 無し
smallrye.jwt.token.schemes Authorization ヘッダで使用されるスキームを指定します。カンマ (,) 区切りで、複数指定することが可能です。 Bearer
smallrye.jwt.require.named-principal sub、upn、preferred_user_name クレームのうち、少なくとも一つが指定されていることをチェックするかどうかを指定します。
true : チェックする
false : チェックしない
false
smallrye.jwt.claims.sub デフォルトの sub クレームの値を指定します。 無し
smallrye.jwt.path.sub Subject 名を含むクレームへのパスを指定します。 JWT トークンに sub クレームが無く、別のクレームに Subject 名が含まれているような場合に使用します。 無し
smallrye.jwt.claims.groups デフォルトの groups クレームの値を指定します。 無し
smallrye.jwt.path.groups グループ値を含むクレームへのパスを指定します。 JWT トークンに groups クレームが無く、別のクレームにグループ値が含まれているような場合に使用します。 無し
smallrye.jwt.groups-separator 複数のグループ値を指定する場合のセパレータを指定します。 smallrye.jwt.path.groups で示される値が、文字列である場合に適用されます。 (スペース)
smallrye.jwt.expiration.grace 有効期限切れのトークンを受け入れる猶予(秒)を指定します。 既定では、現在の時刻がトークンの有効期限後、60秒以内であれば、期限切れのトークンを受け入れます。 60
smallrye.jwt.time-to-live JWTトークン発行後の有効期限(秒)を指定します。 JWTトークンの有効期限と、発行日の差は、この値を超えてはなりません。 無し
smallrye.jwt.jwks.refresh-interval JWK (JSON Web Key) キャッシュの更新間隔 (分) を指定します。 60
smallrye.jwt.jwks.forced-refresh-interval JWK(JSON Web Key)キャッシュの強制リフレッシュ間隔(分)を指定します。 本設定は、mp.jwt.verify.publickey.location に、HTTPS URL ベースのJWKが設定されている場合に有効となります。 30
smallrye.jwt.verify.key-format サポートするキー形式を指定します。 指定可能な値は、PEM_KEY、PEM_CERTIFICATE、JWK、JWK_BASE64URL、ANY です。 ANY
smallrye.jwt.required.claims トークンに含める必要があるクレームを指定します。 カンマ (,) 区切りで複数指定することが可能です。 ANY
smallrye.jwt.decrypt.algorithm 復号化アルゴリズムを指定します。 RSA_OAEP
smallrye.jwt.token.decryption.kid 復号化キー識別子を指定します。本プロパティが設定されている場合、複合化JWKキーや、JWTトークンには、その設定値に合致するkidヘッダが設定されている必要があります。 無し
smallrye.jwt.verify.certificateThumbprint X.509証明書のサムプリントを検証するかどうかを指定します。この設定が有効になっている場合、署名されたJWTトークンには「x5t(X.509証明書SHA-1 サムプリント)」または「x5t#S256(X.509証明書SHA-256 サムプリント)」が含まれている必要があります。この場合、検証キーはJWKまたはPEM形式のみとなります。 また、JWKキーには、「x5c(X.509 証明書チェーン)」プロパティが設定されている必要があります。 false
smallrye.jwt.verify.relax-key-validation 検証キーの検証を緩和するかどうかを指定。プロパティ値がtrueの場合は、長さが2048ビット未満のRSA公開鍵が許可されます。 true
mpjwt.noTokenAllowed HTTPヘッダにJWTトークンが設定されていない場合に、JWT認証を通過させるかどうかを指定します。 true:通過させる false:通過させず、HTTPステータス401を返却する false

*1: 旧バージョンとの互換のためのプロパティで、V11.1より非推奨となります。推奨と非推奨のプロパティ名が同時に指定された場合、非推奨のプロパティに対する設定は無視されます。


21.5. MicroProfile Metrics

MicroProfile Metricsに関する設定について説明します。

21.6. MicroProfile OpenAPI

MicroProfile OpenAPIに関する設定について説明します。

21.6.1. MicroProfile OpenAPI 設定項目一覧

各項目は、MicroProfile Config を利用して設定します。設定方法や、設定値の優先順位等、詳細は、[ アプリケーション開発 > その他のアプリケーション > マイクロサービスアプリケーションの開発 > MicroProfile Config ] を参照してください。

MicroProfile OpenAPI 設定項目一覧
設定名 説明 既定値
mp.openapi.model.reader OASModelReader実装の完全修飾名を指定する。
指定できる完全修飾名は、1つだけ指定できます。
無し
mp.openapi.filter OASFilter実装の完全修飾名を指定する。
指定できる完全修飾名は、1つだけ指定できます。
無し
mp.openapi.scan.disable アノテーションスキャンを無効にする。 false
mp.openapi.scan.packages スキャンするパッケージのリストを指定する。 無し
mp.openapi.scan.classes スキャンするクラスのリストを指定する。 無し
mp.openapi.scan.exclude.packages スキャンから除外するパッケージのリストを指定する。 無し
mp.openapi.scan.exclude.classes スキャンから除外するクラスのリストを指定する。 無し
mp.openapi.servers 接続するグローバルサーバーのリストを指定する。 無し
mp.openapi.servers.path パス内のすべてを使用し処理するサーバーの代替リストを指定する。 無し
mp.openapi.servers.operation. 操作を処理するサーバーの代替リストを指定する。 無し
mp.openapi.schema. 指定クラスのスキーマを指定する。このプロパティは開発者が該当クラスのソースコードにアクセスできない場合に使用する。 無し

21.7. MicroProfile OpenTracing

MicroProfile OpenTracingに関する設定について説明します。

21.7.1. MicroProfile OpenTracing 設定項目一覧

各項目は、Java VM システムプロパティ、または、環境変数として指定してください。ただし、mp.opentracing.client-builder.thread-pool-size プロパティについては、アプリケーション内の、META-INF/microprofile-config.properties での指定も可能です。

MicroProfile OpenTracing 設定項目一覧
設定名 説明 既定値
mp.opentracing.enabled MicroProfile OpenTracing によるトレース情報採取を行うかどうかを指定します。
true : トレース情報を採取する
false : トレース情報を採取しない
false
mp.opentracing.server.skip-pattern トレース情報採取をしないURLパターンを、java.util.regex.Pattern に準拠した記法で指定します。
例) /foo|/bar.*
mp.opentracing.server.operation-name-provider スパンのオペレーション名の形式を指定します。指定可能な値は、次の通りです。
class-method : デフォルトの名前。[<HTTP method<:]<package name>.<class name>.<method name>の形式。
http-path : <HTTP method>:<エンドポイントクラスの@Pathの値>/<エンドポイントメソッドの@Pathの値>の形式。
class-method
mp.opentracing.client-builder.thread-pool-size ClientTracingRegistrar.configure(ClientBuilder) メソッドで、ClientBuilder に設定する Executor のスレッドプールサイズを指定します。
本プロパティは、アプリケーション内の、META-INF/microprofile-config.properties でも指定可能です。
20
mp.opentracing.tracer.class @Injectアノテーションを付与したio.opentracing.Tracerで取得できるTracerオブジェクトのクラスを指定します。 指定が無ければ、その環境で動作しているトレーサー実装 (既定では、Jaeger) の Tracer オブジェクトを保持する io.opentracing.util.GlobalTracer を返します。 なお、指定する Tracer クラスのオブジェクトは、io.opentracing.contrib.tracerresolver.TracerResolver で取得できるようにしておく必要があります。 また、TracerResolver で取得した Tracer クラスと、本プロパティで指定したクラスが一致しない場合は、既定値の GlobalTracer を返します。 io.opentracing.util.GlobalTracer
mp.opentracing.servlet.class トレース対象となる JAX-RS アプリケーションのサーブレットクラスの FQCN を指定します。, (カンマ) 区切りで複数指定することが可能です。 org.glassfish.jersey.servlet.ServletContainer
mp.opentracing.provider.parameter.<FQCN> mp.opentracing.servlet.class プロパティで指定した各サーブレットに対して、@Provider クラスを指定するためのパラメータ名を指定します。 MicroProfile OpenTracing では、@Provider として、javax.ws.rs.container.DynamicFeature を実装した io.smallrye.opentracing.SmallRyeTracingDynamicFeature を登録するため、 JAX-RS の実装に応じて、適切なパラメータ名を指定してください。 jersey.config.server.provider.classnames
mp.opentracing.provider.target.<FQCN> mp.opentracing.servlet.class プロパティで指定した各サーブレットに対して、@Provider クラスの設定対象を指定します。指定可能な設定対象は、次の通りです。
init-param : サーブレットの初期化パラメータに設定
context-param : サーブレットコンテキストの初期化パラメータに設定
attribute : アプリケーションスコープの属性に設定
init-param

21.7.2. Jaeger Client 設定項目一覧

WebOTX で動作する Jaeger Client に対して設定可能な項目は、次の通りです。Java VM システムプロパティ、または、環境変数として指定してください。

なお、V11.1より、MicroProfile OpenTracing 機能を有効にしてトレース情報を採取する場合は、事前にJaeger Client関連ライブラリのインストールが必要です。詳細は、[ アプリケーション開発 > その他のアプリケーション > マイクロサービスアプリケーションの開発 > MicroProfile OpenTracing > 概要 > トレース情報採取のための準備 ] を参照してください。

また、WebOTX Operator を利用している場合は、これらを、カスタムリソースとして指定することが可能です。 カスタムリソースの設定名等、詳細については、[ WebOTX Operator for Kubernetes > カスタムリソース設定項目・設定方法 ] を参照してください。

Jaeger Client 設定項目一覧
設定名 説明 既定値
JAEGER_SERVICE_NAME サービス名を指定します。指定は必須です。Jaeger UIでの検索時等に、使用します。 jaegerservice
JAEGER_AGENT_HOST エージェント (jaeger-agent) が動作するホスト名を指定します。 WebOTX とは別のホストで Jaeger が動作している場合に指定が必要となります。 localhost
JAEGER_AGENT_PORT エージェント (jaeger-agent) が動作する UDP のポート番号を指定します。 6831
JAEGER_ENDPOINT クライアント (jaeger-client) から、エージェント (jaeger-agent) を使わずに、直接、コレクタ (jaeger-collector) に接続する場合に、エンドポイント URL を指定します。 "https://jaeger-collector:14268/api/traces" のような形式で指定します。 この指定がある場合、JAEGER_AGENT_HOST、JAEGER_AGENT_PORT は無視されます。
JAEGER_AUTH_TOKEN JAEGER_ENDPOINT で指定したエンドポイントへのリクエストで、トークンによる認証を行う場合、 "Bearer" として送信する認証トークンを指定します。
JAEGER_USER JAEGER_ENDPOINT で指定したエンドポイントへのリクエストに、基本認証を利用する場合のユーザ名を指定します。
JAEGER_PASSWORD JAEGER_ENDPOINT で指定したエンドポイントへのリクエストに、基本認証を利用する場合のパスワードを指定します。 otxadmin encryptコマンドにより暗号化した値を設定してください。
JAEGER_PROPAGATION トレースコンテキストの伝搬に使うヘッダフォーマットのカンマ (,) 区切りのリストを指定します。 指定可能な値は、次の通りです。
jaeger : Jaeger 標準形式
b3 : Zipkin の B3 形式 ("X-B3"で始まるヘッダ)
w3c : W3C Trace Context 形式
jaeger
JAEGER_REPORTER_LOG_SPANS レポーターがスパンのログを記録するかどうかを指定します。
true : スパンのログを記録する
false : スパンのログを記録しない
false
JAEGER_REPORTER_MAX_QUEUE_SIZE レポーターの最大キューサイズを指定します。 100
JAEGER_REPORTER_FLUSH_INTERVAL レポーターのフラッシュ間隔 (ミリ秒) を指定します。 1000
JAEGER_SAMPLER_TYPE トレース情報をどの程度の割合で採取するかを決定するための、サンプラータイプを指定します。指定可能な値は、次の通りです。
const : 全トレースに対してサンプリングする/しないを指定
probabilistic : JAEGER_SAMPLER_PARAM に指定された確率で、ランダムにサンプリングする
ratelimiting : 1 秒間に、JAEGER_SAMPLER_PARAM に指定された割合でサンプリングする
remote : jaeger-agent 側で指定された方法でサンプリングする
remote
JAEGER_SAMPLER_PARAM サンプラーパラメータを指定します。 JAEGER_SAMPLER_TYPE で指定したサンプラーに対するパラメータ (数値) を指定します。 各サンプラータイプに対して指定する値は、次の通りです。
const : サンプリングする場合は1、しない場合は0を指定
probabilistic : 0.0より大きく、1.0より小さい値を指定 (例えば、0.1の場合、約1/10のトレースをサンプリング)
ratelimiting : 1.0以上の値を指定 (例えば、2.0の場合、1秒間に2トレースの割合でサンプリング)
JAEGER_SAMPLER_MANAGER_HOST_PORT JAEGER_SAMPLER_TYPE に remote を指定した場合の接続先となるリモート制御サンプラーを、<ホスト名>:<ポート番号> の形式で指定します。 localhost:5778
JAEGER_TAGS スパンに追加するタグを、名前=値の形式で指定します。カンマ (,) 区切りで、複数指定することが可能です。

21.8. MicroProfile Rest Client

MicroProfile Rest Clientに関する設定について説明します。

21.8.1. MicroProfile Rest Client 設定項目一覧

MicroProfile Config を利用して設定可能な項目を提示します。設定方法や、設定値の優先順位等、詳細は、[ アプリケーション開発 > その他のアプリケーション > マイクロサービスアプリケーションの開発 > MicroProfile Config ] を参照してください。

MicroProfile Rest Client 設定項目一覧
設定名 説明 既定値
インターフェースの完全修飾名 + "/mp-rest/" + "url" または"uri" MicroProfile Rest Client アプリケーションからJAX-RS アプリケーションにアクセスするために、JAX-RS アプリケーションのベースURL/URIを指定します。"mp-rest"は固定です。
例: sample.restclient.RestClientInterface/mp-rest/url=http://localhost/Hello
無し
インターフェースの完全修飾名 + "/mp-rest/connectTimeout" JAX-RS APへの接続を待機するためのタイムアウトを指定します。ミリ秒単位
無し
インターフェースの完全修飾名 + "/mp-rest/readTimeout" JAX-RS APからの応答を待機するためのタイムアウトを指定します。ミリ秒単位
無し
インターフェースの完全修飾名 + "/mp-rest/hostnameVerifier" カスタムのHostnameVerifierクラス名を指定します。
無し
インターフェースの完全修飾名 + "/mp-rest/keyStore" キーストアの場所を指定します。クラスパスリソース("classpath:/client-keystore.jks"など)またはファイル("/home/user/client-keystore.jks"など)のいずれかを指定してください。
無し
インターフェースの完全修飾名 + "/mp-rest/keyStorePassword" キーストアのパスワードを指定します。
無し
インターフェースの完全修飾名 + "/mp-rest/keyStoreType" キーストアのタイプを指定します。
JKS
インターフェースの完全修飾名 + "/mp-rest/trustStore" トラストストアの場所を指定します。クラスパスリソース("classpath:/client-keystore.jks"など)またはファイル("/home/user/client-keystore.jks"など)のいずれかを指定してください。
無し
インターフェースの完全修飾名 + "/mp-rest/trustStorePassword" トラストストアのパスワードを指定します。
無し
インターフェースの完全修飾名 + "/mp-rest/trustStoreType" トラストストアのタイプを指定します。
JKS
microprofile.rest.client.disable.default.mapper デフォルト例外Mapperを無効にする場合、trueを設定します。
デフォルト例外Mapperは、レスポンスのHTTPステータスコードが400以上の場合にWebApplicationExceptionを返します。ただし、独自例外Mapperクラスが優先され、独自例外Mapperクラスで条件に一致しない場合にデフォルト例外Mapperが実行されます。
false