JBoss EAP XP 5.0 の使用


Red Hat JBoss Enterprise Application Platform 8.0

JBoss EAP XP 5.0 向け

Red Hat Customer Content Services

概要

このドキュメントでは、JBoss EAP XP 5.0 の使用に関する一般的な情報を提供します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

JBoss EAP ドキュメントへのフィードバック (英語のみ)

エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. このリンクをクリック してチケットを作成します。
  2. Summary に課題の簡単な説明を入力します。
  3. Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
  4. Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。

第1章 最新の MicroProfile 機能向けの JBoss EAP XP

1.1. 既存の JBoss EAP 8.0 サーバーなしで JBoss EAP XP 5.0 をインストールする

最初に JBoss EAP 8.0 サーバーを事前にインストールせずに JBoss EAP XP 5.0 をインストールする場合は、以下の手順を実行します。

前提条件

  • インターネットにアクセスできる。
  • Red Hat カスタマーポータルでアカウントを作成し、ログインしている。
  • jboss-eap-installation-manager をダウンロードしている。
注記

Update 02 以降では jboss-eap-installation-manager を使用します。Red Hat カスタマーポータルの JBoss EAP 8.0 パッチ ページから正しいバージョンをダウンロードするか、以下のコマンドを実行して既存のインストールを更新します。

./bin/jboss-eap-installation-manager.sh update perform --self
Copy to Clipboard Toggle word wrap

次のコマンドを実行して、インストールマネージャーのバージョンを確認します。

./bin/jboss-eap-installation-manager.sh --version
Copy to Clipboard Toggle word wrap

手順

  1. ターミナルエミュレーターを開き、jboss-eap-installation-manager ディレクトリーに移動します。
  2. jboss-eap-installation-manager ディレクトリーから次のコマンドを実行して、JBoss EAP XP をインストールします。

    ./bin/jboss-eap-installation-manager.sh install --profile eap-xp-5.0 --dir eap-xp-5
    Copy to Clipboard Toggle word wrap

1.2. 既存の JBoss EAP 8.0 インストールに JBoss EAP XP 5.0 機能パックを追加する

jboss-eap-installation-manager を使用して、既存の JBoss EAP インストールに追加の JBoss EAP XP 5.0 機能パックを追加できます。

前提条件

  • Red Hat カスタマーポータルにアカウントがあり、ログインしている。
  • JBoss EAP XP 5.0 のサポート対象の構成を確認している。
  • サポート対象の JDK をインストールしている。
  • jboss-eap-installation-manager をダウンロードしている。jboss-eap-installation-manager のダウンロードの詳細は、インストールガイド を参照してください。
  • サポートされる方法のいずれかを使用して、JBoss EAP 8.0 をダウンロードまたはインストールした。JBoss EAP のダウンロードの詳細は、インストールガイド を参照してください。
注記

JBoss EAP XP エクステンションをインストールすると、サーバーの更新が自動的に実行され、最新のコンポーネント更新を受信します。

手順

  1. ターミナルエミュレーターを開き、jboss-eap-installation-manager ディレクトリーに移動します。
  2. 以下を実行して、jboss-eap-installation-manager ディレクトリーからこのスクリプトを実行することで、サーバーが JBoss EAP XP チャネルをサブスクライブします。

    ./bin/jboss-eap-installation-manager.sh channel add \
     --channel-name eap-xp-5.0 \
     --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \
     --manifest org.jboss.eap.channels:eap-xp-5.0 \
     --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して JBoss EAP XP エクステンションをインストールします。

    ./bin/jboss-eap-installation-manager.sh feature-pack add \
     --fpl org.jboss.eap.xp:wildfly-galleon-pack \
     --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap

1.3. 既存の JBoss EAP 8.0 インストールに JBoss EAP XP 5.0 機能パックをオフラインで追加する

jboss-eap-installation-manager を使用して、既存の JBoss EAP インストールに JBoss EAP XP 5.0 機能パックをオフラインで追加できます。

前提条件

  • JBoss EAP XP 5.0 のサポート対象の構成を確認している。
  • サポート対象の JDK をインストールしている。
  • jboss-eap-installation-manager をダウンロードしている。jboss-eap-installation-manager のダウンロードの詳細は、インストールガイド を参照してください。
  • サポートされる方法のいずれかを使用して、JBoss EAP 8.0 をダウンロードまたはインストールした。JBoss EAP のダウンロードの詳細は、インストールガイド を参照してください。
  • JBoss EAP 8.0 および JBoss EAP XP 5.0 の最新のオフラインリポジトリーをダウンロードして展開しました。

手順

  1. ターミナルエミュレーターを開き、jboss-eap-installation-manager ディレクトリーに移動します。
  2. 以下を実行して、jboss-eap-installation-manager ディレクトリーからこのスクリプトを実行することで、サーバーが JBoss EAP XP チャネルをサブスクライブします。
./bin/jboss-eap-installation-manager.sh channel add \
 --channel-name eap-xp-5.0 \
 --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \
 --manifest org.jboss.eap.channels:eap-xp-5.0 \
 --dir eap-xp-5.0
Copy to Clipboard Toggle word wrap
  1. JBoss EAP XP をインストールし、--repositories parameter を使用してオフラインリポジトリーを指定します。
./bin/jboss-eap-installation-manager.sh feature-pack add \
 --fpl org.jboss.eap.xp:wildfly-galleon-pack \
 --dir eap-xp-5.0 \
 --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
Copy to Clipboard Toggle word wrap
注記

機能パックは、--dir option で渡された JBoss EAP インストールに追加されます。

1.4. jboss-eap-installation-manager を使用して JBoss EAP XP インストールを更新する

JBoss EAP をダウンロードしてインストールした後、新しい更新が利用可能になると定期的に JBoss EAP を更新できます。

前提条件

  • インターネットにアクセスできる。
  • サポート対象の JDK をインストールしている。
  • jboss-eap-installation-manager をダウンロードしている。jboss-eap-installation-manager のダウンロードの詳細は、インストールガイド を参照してください。
  • サポートされる方法のいずれかを使用して、JBoss EAP 8.0 をダウンロードまたはインストールした。JBoss EAP のダウンロードの詳細は、インストールガイド を参照してください。

手順

  1. ダウンロードした jboss-eap-installation-manager を展開します。
  2. ターミナルエミュレーターを開き、展開した jboss-eap-installation-manager ディレクトリーに移動します。
  3. jboss-eap-installation-manager ディレクトリーからこのスクリプトを実行して、利用可能な更新を確認します。

    ./bin/jboss-eap-installation-manager.sh update list --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して JBoss EAP を更新します。

    構文

    ./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap

    ./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0
    Updates found:
      org.wildfly.galleon-plugins:wildfly-galleon-plugins    6.3.1.Final-redhat-00001 ==>  6.3.2.Final-redhat-00001
      org.wildfly.wildfly-http-client:wildfly-http-transaction-client    2.0.1.Final-redhat-00001 ==>  2.0.2.Final-redhat-00001
    Copy to Clipboard Toggle word wrap

1.5. jboss-eap-installation-manager を使用して JBoss EAP XP インストールをオフラインで更新する

jboss-eap-installation-manager を使用して、JBoss EAP XP 5.0 インストールをオフラインで更新できます。

前提条件

  • サポート対象の JDK をインストールしている。
  • jboss-eap-installation-manager をダウンロードしている。jboss-eap-installation-manager のダウンロードの詳細は、インストールガイド を参照してください。
  • サポートされる方法のいずれかを使用して、JBoss EAP 8.0 をダウンロードまたはインストールした。JBoss EAP のダウンロードの詳細は、インストールガイド を参照してください。
  • JBoss EAP 8.0 および JBoss EAP XP 5.0 の最新のオフラインリポジトリーをダウンロードして展開しました。

手順

  1. JBoss EAP サーバーを停止します。
  2. ターミナルエミュレーターを開き、jboss-eap-installation-manager ディレクトリーに移動します。
  3. jboss-eap-installation-manager ディレクトリーからこのスクリプトを実行して、サーバーコンポーネントを更新します。

    ./bin/jboss-eap-installation-manager.sh update perform \
     --dir eap-xp-5.0  \
     --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<FEATURE_PACK_OFFLINE_REPO>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
    Copy to Clipboard Toggle word wrap

関連情報

1.6. JBoss EAP XP サーバーを JBoss EAP に戻す

jboss-eap-installation-manager を使用して、JBoss EAP XP インストールを元に戻すことができます。

前提条件

  • インターネットにアクセスできる。
  • サポート対象の JDK をインストールしている。
  • jboss-eap-installation-manager をダウンロードしている。jboss-eap-installation-manager のダウンロードの詳細は、インストールガイド を参照してください。
  • サポートされる方法のいずれかを使用して、JBoss EAP 8.0 をダウンロードまたはインストールした。JBoss EAP のダウンロードの詳細は、インストールガイド を参照してください。

手順

  1. ターミナルエミュレーターを開き、jboss-eap-installation-manager ディレクトリーに移動します。
  2. jboss-eap-installation-manager ディレクトリーからこのスクリプトを実行して、JBoss EAP XP サーバーに追加されたすべての機能パックの履歴を調査します。

    ./bin/jboss-eap-installation-manager.sh history --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap
  3. JBoss EAP XP サーバーを停止します。
  4. JBoss EAP XP エクステンションが追加される前のバージョンに戻します。

    ./bin/jboss-eap-installation-manager.sh revert perform \
     --revision <REVISION_HASH> \
     --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap

関連情報

第2章 MicroProfile について

2.1. MicroProfile Config

2.1.1. JBoss EAP での MicroProfile Config

設定データは動的に変更でき、アプリケーションはサーバーを再起動せずに最新の設定情報にアクセスできる必要があります。

MicroProfile Config は設定データのポータブルな外部化を実現します。つまり、アプリケーションとマイクロサービスを、変更または再パッケージ化せずに複数の環境で実行するように設定できます。

MicroProfile Config 機能は、SmallRye Config を使用して JBoss EAP に実装され、microprofile-config-smallrye サブシステムによって提供されます。

注記

MicroProfile Config は JBoss EAP XP でのみサポートされます。これは JBoss EAP ではサポートされません。

重要

独自の Config 実装を追加する場合は、Config インターフェイスの最新バージョンのメソッドを使用する必要があります。

2.1.2. MicroProfile Config でサポートされる MicroProfile Config ソース

MicroProfile Config 設定プロパティーは、さまざまな場所から取得でき、形式が異なる場合があります。これらのプロパティーは ConfigSources によって提供されます。ConfigSources は org.eclipse.microprofile.config.spi.ConfigSource インターフェイスの実装です。

MicroProfile Config 仕様は、設定値を取得するために、以下のデフォルト ConfigSource 実装を提供します。

  • System.getProperties()
  • System.getenv()
  • クラスパス上のすべての META-INF/microprofile-config.properties

microprofile-config-smallrye サブシステムは、設定値を取得するために ConfigSource リソースの追加タイプをサポートします。以下のリソースから設定値を取得することもできます。

  • microprofile-config-smallrye/config-source 管理リソースでのプロパティー
  • ディレクトリー内のファイル
  • ConfigSource クラス
  • ConfigSourceProvider クラス

2.2. MicroProfile Fault Tolerance

2.2.1. MicroProfile Fault Tolerance 仕様について

MicroProfile Fault Tolerance 仕様は、分散したマイクロサービスに特有のエラーに対応するストラテジーを定義します。

MicroProfile Fault Tolerance 仕様は、エラーを処理する以下のストラテジーを定義します。

Timeout
実行が終了べき時間を定義します。タイムアウトを定義すると、実行を永久に待機できなくなります。
Retry
失敗した実行を再試行する基準を定義します。
Fallback
実行に失敗した場合の代替を指定します。
CircuitBreaker
一時的に停止するまでの実行試行回数を定義します。遅延の長さを定義すると、実行を再開することができます。
Bulkhead
システムの一部で障害を分離して、残りのシステムを機能させます。
Asynchronous
別のスレッドでクライアント要求を実行します。

2.2.2. JBoss EAP での MicroProfile Fault Tolerance

microprofile-fault-tolerance-smallrye サブシステムは、JBoss EAP での MicroProfile Fault Tolerance のサポートを提供します。このサブシステムは、JBoss EAP XP ストリームでのみ利用できます。

microprofile-fault-tolerance-smallrye サブシステムはインターセプターバインディングに以下のアノテーションを提供します。

  • @Timeout
  • @Retry
  • @Fallback
  • @CircuitBreaker
  • @Bulkhead
  • @Asynchronous

これらのアノテーションはクラスレベルまたはメソッドレベルでバインドできます。クラスにバインドされたアノテーションは、そのクラスのすべてのビジネスメソッドに適用されます。

以下のルールはバインディングインターセプターに適用されます。

  • コンポーネントクラスがクラスレベルのインターセプターバインディングを宣言または継承する場合、以下の制限が適用されます。

    • クラスは final を宣言することはできません。
    • クラスには static、private、または final メソッドを含めることはできません。
  • コンポーネントクラスの静的ではない非プライベートメソッドがメソッドレベルのインターセプターバインディングを宣言する場合、メソッドやコンポーネントクラスも final 宣言されません。

フォールトトレランス操作には以下の制限があります。

  • フォールトトレランスインターセプターバインディングは bean クラスまたは bean クラスメソッドに適用する必要があります。
  • 呼び出し時、呼び出しは Jakarta Contexts and Dependency Injection 仕様で定義されているビジネスメソッド呼び出しである必要があります。
  • 以下の条件が両方とも true の場合、操作はフォールトトレランスと見なされません。

    • メソッド自体は、フォールトトレランスインターセプターにバインドされません。
    • メソッドが含まれるクラスは、フォールトトレランスインターセプターにバインドされません。

microprofile-fault-tolerance-smallrye サブシステムは、MicroProfile Fault Tolerance が提供する設定オプションに加え、以下の設定オプションを提供します。

  • io.smallrye.faulttolerance.mainThreadPoolSize
  • io.smallrye.faulttolerance.mainThreadPoolQueueSize

2.3. MicroProfile Health

2.3.1. JBoss EAP での MicroProfile Health

JBoss EAP には SmallRye Health コンポーネントが含まれており、これを使用して JBoss EAP インスタンスが想定どおりに応答しているかどうかを判断できます。この機能はデフォルトで有効になります。

MicroProfile Health は、JBoss EAP をスタンドアロンサーバーとして実行している場合のみ利用できます。

MicroProfile Health 仕様は、以下のヘルスチェックを定義します。

Readiness
アプリケーションがリクエストを処理する準備ができているかどうかを決定します。@Readiness アノテーションは、このヘルスチェックを提供します。
Liveness
アプリケーションが実行されているかどうかを決定します。@Liveness アノテーションは、このヘルスチェックを提供します。
Startup
アプリケーションがすでに開始されているかどうかを判別します。アノテーション @Startup は、このヘルスチェックを提供します。

@Health アノテーションは MicroProfile Health 3.0 で削除されました。

MicroProfile Health 3.1 には、新しい Startup ヘルスチェックプローブが含まれています。

MicroProfile Health 3.1 における互換性の重大な変更に関する詳細は、Release Notes for MicroProfile Health 3.1 を参照してください。

重要

:empty-readiness-checks-status:empty-liveness-checks-status、および :empty-startup-checks-status 管理属性は、readinessliveness、または startup プローブが定義されていない場合のグローバルステータスを指定します。

2.4. MicroProfile JWT

2.4.1. JBoss EAP での MicroProfile JWT 統合

サブシステム microprofile-jwt-smallrye は、JBoss EAP で MicroProfile JWT 統合を提供します。

以下の機能は microprofile-jwt-smallrye サブシステムによって提供されます。

  • MicroProfile JWT セキュリティーを使用するデプロイメントの検出。
  • MicroProfile JWT のサポートの有効化。

サブシステムには設定可能な属性やリソースが含まれません。

org.eclipse.microprofile.jwt.auth.api モジュールは、microprofile-jwt-smallrye サブシステムの他に、JBoss EAP で MicroProfile JWT 統合を提供します。

関連情報

2.4.2. 従来のデプロイメントと MicroProfile JWT デプロイメントの相違点

MicroProfile JWT デプロイメントは、従来の JBoss EAP デプロイメントなどの管理された SecurityDomain リソースに依存しません。代わりに、仮想 SecurityDomain が作成され、MicroProfile JWT デプロイメント全体で使用されます。

MicroProfile JWT デプロイメントは MicroProfile Config プロパティーと microprofile-jwt-smallrye サブシステム内で完全に設定されるため、仮想 SecurityDomain はデプロイメントの他の管理設定を必要としません。

2.4.3. JBoss EAP での MicroProfile JWT アクティベーション

MicroProfile JWT は、アプリケーションに auth-method の有無に基づいてアプリケーションに対してアクティベートされます。

MicroProfile JWT 統合は、以下のようにアプリケーションに対してアクティベートされます。

  • デプロイメントプロセスの一環として、JBoss EAP はアプリケーションアーカイブで auth-method の存在をスキャンします。
  • auth-method 存在し、MP-JWT として定義されている場合は、MicroProfile JWT 統合がアクティベートされます。

auth-method は、以下のファイルのいずれかまたは両方で指定できます。

  • javax.ws.rs.core.Application を拡張するクラスを含むファイル。@LoginConfig アノテーション付き。
  • web.xml 設定ファイル

auth-method がアノテーションを使用して、および web.xml 設定ファイルの両方に定義されている場合は、web.xml 設定ファイルの定義が使用されます。

2.4.4. JBoss EAP での MicroProfile JWT の制限

JBoss EAP の MicroProfile JWT 実装にはいくつかの制限があります。

JBoss EAP には、MicroProfile JWT 実装の制限があります。

  • MicroProfile JWT 実装は、mp.jwt.verify.publickey プロパティーで提供された JSON Web Key Set(JWKS) からの最初の鍵のみを解析します。したがって、トークンが 2 つ目の鍵または 2 つ目の鍵の後に署名されるように要求すると、トークンの検証に失敗し、トークンを含むリクエストは承認されません。
  • JWKS の base64 エンコードはサポートされていません。

いずれの場合も、mp.jwt.verify.publickey.location 設定プロパティーを使用する代わりに、クリアーテキスト JWKS を参照できます。

2.5. MicroProfile OpenAPI

2.5.1. JBoss EAP での MicroProfile OpenAPI

MicroProfile OpenAPI は、microprofile-openapi-smallrye サブシステムを使用して JBoss EAP に統合されます。

MicroProfile OpenAPI 仕様は、OpenAPI 3.0 ドキュメントを提供する HTTP エンドポイントを定義します。OpenAPI 3.0 ドキュメントでは、ホストの REST サービスを説明します。OpenAPI エンドポイントは、設定されたパス (例: http://localhost:8080/openapi) を使用してデプロイメントに関連付けられたホストのルートに対して登録されます。

注記

現在、仮想ホストの OpenAPI エンドポイントは単一デプロイメントのみを文書化できます。同じ仮想ホストの異なるコンテキストパスで登録された複数のデプロイメントで OpenAPI を使用するには、各デプロイメントは個別のエンドポイントパスを使用する必要があります。

OpenAPI エンドポイントはデフォルトで YAML ドキュメントを返します。Accept HTTP ヘッダーまたは format クエリーパラメーターを使用して JSON ドキュメントをリクエストすることもできます。

指定のアプリケーションの Undertow サーバーまたはホストが HTTPS リスナーを定義する場合、OpenAPI ドキュメントも HTTPS を使用して利用できます。たとえば、HTTPS のエンドポイントは https://localhost:8443/openapi です。

2.6. MicroProfile Telemetry

2.6.1. JBoss EAP の MicroProfile Telemetry

MicroProfile Telemetry は、OpenTelemetry に基づくアプリケーションのトレース機能を提供します。サービス境界全体でリクエストをトレースする機能は、ライフサイクル中にリクエストが複数のサービスを通過するマイクロサービス環境で特に重要となります。

MicroProfile Telemetry は OpenTelemetry サブシステムを拡張し、MicroProfile Config のサポートを追加します。これにより、ユーザーは MicroProfile Config を使用して OpenTelemetry を設定できるようになります。

注記

MicroProfile Telemetry サブシステムには設定可能なリソースまたは属性はありません。

2.7. MicroProfile REST Client

2.7.1. MicroProfile REST クライアント

JBoss EAP XP 5.0.0 は、HTTP 上で RESTful サービスを呼び出すために型安全なアプローチを提供するために Jakarta RESTful Web Services 2.1.6 クライアント API 上にビルドされる MicroProfile REST クライアント 2.0 をサポートします。MicroProfile Type Safe REST クライアントは、Java インターフェイスとして定義されます。MicroProfile REST クライアントでは、実行可能コードでクライアントアプリケーションを作成できます。

MicroProfile REST クライアントを使用して以下の機能を利用します。

  • 直感的な構文
  • プロバイダーのプログラムによる登録
  • プロバイダーの宣言的登録
  • ヘッダーの宣言的仕様
  • サーバー上のヘッダーの伝搬
  • ResponseExceptionMapper
  • Jakarta Contexts and Dependency Injection の統合
  • サーバー向けイベント (SSE) へのアクセス

2.7.2. resteasy.original.webapplicationexception.behavior MicroProfile Config プロパティー

MicroProfile Config は、開発者がアプリケーションとマイクロサービスを設定して、それらのアプリケーションを変更または再パッケージ化することなく、複数の環境で実行できるようにするために使用できる仕様の名前です。以前は、MicroProfile Config はテクノロジープレビューとして JBoss EAP で利用可能でしたが、その後削除されました。MicroProfile Config は、JBoss EAP XP でのみ使用できるようになりました。

resteasy.original.webapplicationexception.behavior MicroProfile Config プロパティーの定義

resteasy.original.webapplicationexception.behavior パラメーターは、web.xml サーブレットプロパティーまたはシステムプロパティーのいずれかとして設定できます。web.xml のそのようなサーブレットプロパティーの例を次に示します。

<context-param>
    <param-name>resteasy.original.webapplicationexception.behavior</param-name>
    <param-value>true</param-value>
</context-param>
Copy to Clipboard Toggle word wrap

MicroProfile Config を使用して、他の RESTEasy プロパティーを設定することもできます。

2.8. MicroProfile Reactive Messaging

2.8.1. MicroProfile Reactive Messaging

JBoss EAP XP 5.0.0 にアップグレードする際に、リアクティブメッセージングエクステンションおよびサブシステムが含まれる最新バージョンの MicroProfile Reactive Messaging を有効化できます。

"リアクティブストリーム" は、処理プロトコルと標準とともに一連のイベントデータであり、バッファリングなしで非同期境界 (スケジューラーなど) を超えてプッシュされます。"イベント" は、たとえば、天気予報アプリケーションでスケジュールされ、繰り返される温度チェックの場合があります。リアクティブストリームの主な利点は、さまざまなアプリケーションと実装のシームレスな相互運用性です。

リアクティブメッセージングは、イベント駆動型、データストリーミング、およびイベントソーシングアプリケーションをビルドするためのフレームワークを提供します。リアクティブメッセージングにより、あるアプリケーションから別のアプリケーションへのイベントデータ (リアクティブストリーム) の継続的かつスムーズな交換が実現します。MicroProfile Reactive Messaging を使用して、リアクティブストリームを介した非同期メッセージングを行うことができます。これにより、アプリケーションは、たとえば Apache Kafka などの他のアプリケーションと対話できます。

MicroProfile Reactive Messaging のインスタンスを最新バージョンにアップグレードした後、次の操作を実行できます。

  • Apache Kafka データストリーミングプラットフォーム用の MicroProfile Reactive Messaging を使用してサーバーをプロビジョニングします。
  • 最新のリアクティブメッセージング API を介して、メモリー内および Apache Kafka トピックでサポートされるリアクティブメッセージングと対話する。
  • 利用可能な任意のメトリクスシステムを使用して、特定のチャネルでストリーミングされるメッセージの数を決定します。

2.8.2. MicroProfile リアクティブメッセージングコネクター

コネクターを使用して、MicroProfile Reactive Messaging を多数の外部メッセージングシステムと統合できます。MicroProfile for JBoss EAP には、Apache Kafka コネクターと Advanced Message Queuing Protocol (AMQP) コネクターが付属しています。Eclipse MicroProfile Config 仕様を使用して、コネクターを設定します。

MicroProfile Reactive Messaging コネクターと組み込まれたレイヤー

MicroProfile Reactive Messaging には次のコネクターが含まれています。

  • Kafka connector

    microprofile-reactive-messaging-kafka レイヤーには Kafka コネクターが組み込まれています。

  • AMQP コネクター

    microprofile-reactive-messaging-amqp レイヤーには AMQP コネクターが組み込まれています。

両方のコネクターレイヤーには、microprofile-reactive-messaging Galleon レイヤーが含まれています。microprofile-reactive-messaging レイヤーは、コアの MicroProfile Reactive Messaging 機能を提供します。

Expand
表2.1 リアクティブメッセージングとコネクター Galleon レイヤー
レイヤー定義

microprofile-reactive-streams-operators

  • MicroProfile Reactive Streams Operators API を提供し、モジュールの実装をサポートします。
  • SmallRye エクステンションとサブシステムを備えた MicroProfile Reactive Streams Operators が含まれています。
  • cdi レイヤーに依存します。

    • cdi は、Jakarta Contexts and Dependency Injection の略です。@Inject 機能を追加するサブシステムを提供します。

microprofile-reactive-messaging

  • MicroProfile Reactive Messaging API を提供し、モジュールの実装をサポートします。
  • SmallRye エクステンションとサブシステムを備えた MicroProfile が含まれています。
  • microprofile-configmicroprofile-reactive-streams-operators レイヤーに依存します。

microprofile-reactive-messaging-kafka

  • MicroProfile Reactive Messaging が Kafka と対話できるようにする Kafka コネクターモジュールを提供します。
  • microprofile-reactive-messaging レイヤーに依存します。

microprofile-reactive-messaging-amqp

  • MicroProfile Reactive Messaging が AMQP クライアントと対話できるようにする AMQP コネクターモジュールを提供します。
  • microprofile-reactive-messaging レイヤーに依存します。

2.8.3. Apache Kafka イベントストリーミングプラットフォーム

Apache Kafka は、レコードのストリームをリアルタイムでパブリッシュ、登録、保存、および処理できるオープンソースの分散イベント (データ) ストリーミングプラットフォームです。複数のソースからのイベントストリームを処理し、それらを複数のコンシューマーに配信して、大量のデータをポイント A から Z、およびその他の場所にすべて同時に移動します。MicroProfile Reactive Messaging は、Apache Kafka を使用して、これらのイベントレコードをわずか 2 マイクロ秒で配信し、分散したフォールトトレラントクラスターに安全に保存し、チーム定義のゾーンまたは地理的地域全体で利用できるようにします。

第3章 JBoss EAP での MicroProfile の管理

3.1. MicroProfile Telemetry 管理

3.1.1. 管理 CLI を使用して MicroProfile Telemetry サブシステムの追加

MicroProfile Telemetry コンポーネントは、microprofile-telemetry サブシステムを通じてデフォルトの MicroProfile 設定に統合されます。サブシステムが含まれていない場合は、管理 CLI を使用して MicroProfile Telemetry サブシステムを追加することもできます。

前提条件

  • MicroProfile Telemetry サブシステムを追加する前に、OpenTelemetry サブシステムを設定に追加する必要があります。MicroProfile Telemetry サブシステムは OpenTelemetry サブシステムに依存します。

手順

  1. ターミナルを開きます。
  2. 以下のコマンドを実行します。

    $ <JBOSS_HOME>/bin/jboss-cli.sh -c <<EOF
        if (outcome != success) of /subsystem=opentelemetry:read-resource
            /extension=org.wildfly.extension.opentelemetry:add()
            /subsystem=opentelemetry:add()
        end-if
        /extension=org.wildfly.extension.microprofile.telemetry:add
        /subsystem=microprofile-telemetry:add
        reload
    EOF
    Copy to Clipboard Toggle word wrap

3.1.2. MicroProfile Telemetry サブシステムを有効にする

MicroProfile Telemetry はデフォルトで無効になっており、アプリケーションごとに有効にする必要があります。

前提条件

  • MicroProfile Telemetry サブシステムが設定に追加されました。
  • OpenTelemetry サブシステムが設定に追加されました。

手順

  1. microprofile-config.properties ファイルを開きます。
  2. otel.sdk.disabled プロパティーを false に設定します。

    otel.sdk.disabled=false
    Copy to Clipboard Toggle word wrap

3.1.3. MicroProfile Config を使用したオーバーライドサーバーの設定

MicroProfile Config を使用して、MicroProfile Telemetry サブシステム内の個々のアプリケーションのサーバー設定をオーバーライドできます。

たとえば、エクスポートされたトレースでデフォルトで使用されるサービス名は、デプロイメントアーカイブと同じです。デプロイメントアーカイブが my-application-1.0.war に設定されている場合、サービス名は同じになります。この設定を上書きするには、設定ファイル内の otel.service.name プロパティーの値を変更します。

otel.service.name=My Application
Copy to Clipboard Toggle word wrap

3.2. MicroProfile Config の設定

3.2.1. ConfigSource 管理リソースでのプロパティーの追加

プロパティーは管理リソースとして config-source サブシステムに直接保存できます。

手順

  • ConfigSource を作成し、プロパティーを追加します。

    /subsystem=microprofile-config-smallrye/config-source=props:add(properties={"name" = "jim"})
    Copy to Clipboard Toggle word wrap

3.2.2. ディレクトリーを ConfigSources として設定

プロパティーがファイルとしてディレクトリーに保存されている場合、file-name はプロパティーの名前で、ファイルの内容はプロパティーの値になります。

手順

  1. ファイルを保存するディレクトリーを作成します。

    $ mkdir -p ~/config/prop-files/
    Copy to Clipboard Toggle word wrap
  2. ディレクトリーに移動します。

    $ cd ~/config/prop-files/
    Copy to Clipboard Toggle word wrap
  3. プロパティー name の値を保存するファイル name を作成します。

    $ touch name
    Copy to Clipboard Toggle word wrap
  4. プロパティーの値をファイルに追加します。

    $ echo "jim" > name
    Copy to Clipboard Toggle word wrap
  5. ファイル名がプロパティーであり、プロパティーの値が含まれるファイルが含まれる ConfigSource を作成します。

    /subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=~/config/prop-files})
    Copy to Clipboard Toggle word wrap

    これにより、以下の XML 設定が以下のようになります。

    <subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
        <config-source name="file-props">
            <dir path="/etc/config/prop-files"/>
        </config-source>
    </subsystem>
    Copy to Clipboard Toggle word wrap

3.2.3. ルートディレクトリーを ConfigSource として設定

root 属性を使用して、ディレクトリーを複数の MicroProfile ConfigSource ディレクトリーのルートディレクトリーとして定義できます。

ネストされた root 属性は、/subsystem=microprofile-config-smallrye/config-source=* リソースの dir 複合属性の一部です。これにより、同じルートディレクトリーを共有する場合に、複数の ConfigSource ディレクトリーを指定する必要がなくなります。

ルートディレクトリー内の直接のファイルは無視されます。これらは設定には使用されません。最上位ディレクトリーは ConfigSource として扱われます。ネストされたディレクトリーも無視されます。

注記

最上位ディレクトリーの ConfigSource には、デフォルトで /subsystem=microprofile-config-smallrye/config-source=* リソースの ordinal が割り当てられます。

最上位ディレクトリーに config_ordinal ファイルが含まれている場合は、ファイルで指定された値がデフォルトの ordinal上書き します。同じ ordinal を持つ 2 つの最上位ディレクトリーに同じエントリーが含まれている場合、ディレクトリー名はアルファベット順にソートされ、最初のディレクトリーが使用されます。

前提条件

  • MicroProfile Config 拡張機能をインストールし、microprofile-config-smallrye サブシステムを有効にしました。

手順

  1. ターミナルを開きます。
  2. ファイルを保存するディレクトリーを作成します。

    mkdir -p ~/etc/config/prop-files/
    Copy to Clipboard Toggle word wrap
  3. 作成したディレクトリーに移動します。

    cd ~/etc/config/prop-files/
    Copy to Clipboard Toggle word wrap
  4. プロパティー name の値を保存するファイル name を作成します。

    touch name
    Copy to Clipboard Toggle word wrap
  5. プロパティーの値をファイルに追加します。

    echo "jim" > name
    Copy to Clipboard Toggle word wrap
  6. CLI で次のコマンドを実行して、ファイル名がプロパティーであり、ファイルにプロパティーの値が含まれる ConfigSource を作成します。

    /subsystem=microprofile-config-smallrye/config-source=prop-files:add(dir={path=/etc/config, root=true})
    Copy to Clipboard Toggle word wrap
  7. 結果は次の XML 設定になります。

    <subsystem
    xmlns="urn:wildfly:microprofile-config-smallrye:2.0">
     <config-source name="prop-files">
       <dir path="/etc/config" root="true"/>
     </config-source>
    </subsystem>
    Copy to Clipboard Toggle word wrap

3.2.4. ConfigSource クラスからの ConfigSource の取得

カスタムの org.eclipse.microprofile.config.spi.ConfigSource 実装クラスを作成および設定して、設定値のソースを提供することができます。

手順

  • 以下の管理 CLI コマンドは、org.example という名前の JBoss モジュールによって提供される、org.example.MyConfigSource という名前の実装クラスの ConfigSource を作成します。

    org.example モジュールから ConfigSource を使用する場合は、<module name="org.eclipse.microprofile.config.api"/> 依存関係を path/to/org/example/main/module.xml ファイルに追加します。

    /subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})
    Copy to Clipboard Toggle word wrap

    このコマンドを実行すると、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>
    Copy to Clipboard Toggle word wrap

カスタムの org.eclipse.microprofile.config.spi.ConfigSource 実装クラスによって提供されるプロパティーはすべての JBoss EAP デプロイメントで使用できます。

3.2.5. ConfigSourceProvider クラスからの ConfigSource 設定の取得

複数の ConfigSource インスタンスの実装を登録する、カスタムの org.eclipse.microprofile.config.spi.ConfigSourceProvider 実装クラスを作成および設定できます。

手順

  • config-source-provider を作成します。

    /subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})
    Copy to Clipboard Toggle word wrap

    このコマンドは、org.example という名前の JBoss Module によって提供される、org.example.MyConfigSourceProvider という名前の実装クラスの config-source-provider を作成します。

    org.example モジュールから config-source-provider を使用する場合は、<module name="org.eclipse.microprofile.config.api"/> 依存関係を path/to/org/example/main/module.xml ファイルに追加します。

    このコマンドを実行すると、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>
    Copy to Clipboard Toggle word wrap

ConfigSourceProvider 実装によって提供されるプロパティーはすべての JBoss EAP デプロイメントで使用できます。

3.3. MicroProfile Fault Tolerance 設定

3.3.1. MicroProfile Fault Tolerance 拡張の追加

MicroProfile Fault Tolerance 拡張は、JBoss EAP XP の一部として提供される standalone-microprofile.xml および standalone-microprofile-ha.xml 設定に含まれています。

エクステンションは標準の standalone.xml 設定に含まれません。エクステンションを使用するには、手動で有効にする必要があります。

前提条件

  • JBoss EAP 8.0 と JBoss EAP XP 5.0 がインストールされている。

手順

  1. 以下の管理 CLI コマンドを使用して MicroProfile Fault Tolerance 拡張を追加します。

    /extension=org.wildfly.extension.microprofile.fault-tolerance-smallrye:add
    Copy to Clipboard Toggle word wrap
  2. 以下の managenent コマンドを使用して、microprofile-fault-tolerance-smallrye サブシステムを有効にします。

    /subsystem=microprofile-fault-tolerance-smallrye:add
    Copy to Clipboard Toggle word wrap
  3. 以下の管理コマンドでサーバーをリロードします。

    reload
    Copy to Clipboard Toggle word wrap

3.4. MicroProfile Health 設定

3.4.1. 管理 CLI を使用した正常性の検証

管理 CLI を使用してシステムの正常性を確認できます。

手順

  • 正常性を確認します。

    /subsystem=microprofile-health-smallrye:check
    {
        "outcome" => "success",
        "result" => {
            "status" => "UP",
            "checks" => []
        }
    }
    Copy to Clipboard Toggle word wrap

3.4.2. 管理コンソールを使用した正常性の検証

管理コンソールを使用してシステムの正常性を確認できます。

チェックランタイム操作では、ヘルスチェックとグローバルの結果がブール値として表示されます。

手順

  1. Runtime タブに移動し、サーバーを選択します。
  2. Monitor の列で MicroProfile HealthView の順にクリックします。

3.4.3. HTTP エンドポイントを使用した正常性の検証

正常性検証は JBoss EAP の正常性コンテキストに自動的にデプロイされるため、HTTP エンドポイントを使用して現在の正常性を取得できます。

管理インターフェイスからアクセスできる /health エンドポイントのデフォルトアドレスは http://127.0.0.1:9990/health です。

手順

  • HTTP エンドポイントを使用して、サーバーの現在のヘルス状態を取得するには、以下の URL を使用します。

    http://<host>:<port>/health
    Copy to Clipboard Toggle word wrap

    このコンテキストにアクセスすると、サーバーの状態を示すヘルスチェックが JSON 形式で表示されます。

3.4.4. MicroProfile Health の認証の有効化

アクセスに認証を要求するように health コンテキストを設定できます。

手順

  1. microprofile-health-smallrye サブシステムで security-enabled 属性を true に設定します。

    /subsystem=microprofile-health-smallrye:write-attribute(name=security-enabled,value=true)
    Copy to Clipboard Toggle word wrap
  2. 変更を反映するためにサーバーをリロードします。

    reload
    Copy to Clipboard Toggle word wrap

/health エンドポイントにアクセスしようとすると、認証プロンプトがトリガーされるようになります。

3.4.5. サーバーの正常性および準備状態を判断する readiness プローブ

JBoss EAP XP 5.0.0 は、サーバーの正常性と readiness を判断するために 3 つの readiness プローブをサポートします。

  • server-status: server-state は running のとき、UP を返します。
  • boot-errors: プローブがブートエラーを検出しないときに UP を返します。
  • deployment-status: すべてのデプロイメントのステータスが OK の場合は UP を返します。

これらの readiness プローブはデフォルトで有効にされます。MicroProfile Config プロパティー mp.health.disable-default-procedures を使用してプローブを無効にすることができます。

以下の例は、check 操作で 3 つのプローブを使用する方法を示しています。

[standalone@localhost:9990 /] /subsystem=microprofile-health-smallrye:check
{
    "outcome" => "success",
    "result" => {
        "status" => "UP",
        "checks" => [
            {
                "name" => "boot-errors",
                "status" => "UP"
            },
            {
                "name" => "server-state",
                "status" => "UP",
                "data" => {"value" => "running"}
            },
            {
                "name" => "empty-readiness-checks",
                "status" => "UP"
            },
            {
                "name" => "deployments-status",
                "status" => "UP"
            },
            {
                "name" => "empty-liveness-checks",
                "status" => "UP"
            },
            {
                "name" => "empty-startup-checks",
                "status" => "UP"
            }
        ]
    }
}
Copy to Clipboard Toggle word wrap

3.4.6. プローブが定義されていない場合のグローバルステータス

:empty-readiness-checks-status:empty-liveness-checks-status、および :empty-startup-checks-status 管理属性は、readinessliveness、または startup プローブが定義されていない場合のグローバルステータスを指定します。

これらの属性により、アプリケーションは、そのアプリケーションが ready/live または、started up であることをプローブが確認するまで、DOWN を報告できるようになります。デフォルトでは、アプリケーションは 'UP' を報告します。

  • :empty-readiness-checks-status 属性は、readiness プローブが定義されていない場合に、readiness プローブのグローバルステータスを指定します。

    /subsystem=microprofile-health-smallrye:read-attribute(name=empty-readiness-checks-status)
    {
        "outcome" => "success",
        "result" => expression "${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}"
    }
    Copy to Clipboard Toggle word wrap
  • :empty-liveness-checks-status 属性は、liveness プローブが定義されていない場合に、liveness プローブのグローバルステータスを指定します。

    /subsystem=microprofile-health-smallrye:read-attribute(name=empty-liveness-checks-status)
    {
        "outcome" => "success",
        "result" => expression "${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}"
    }
    Copy to Clipboard Toggle word wrap
  • :empty-startup-checks-status 属性は、startup プローブが定義されていない場合に、startup プローブのグローバルステータスを指定します。

    /subsystem=microprofile-health-smallrye:read-attribute(name=empty-startup-checks-status)
    {
        "outcome" => "success",
        "result" => expression "${env.MP_HEALTH_EMPTY_STARTUP_CHECKS_STATUS:UP}"
    }
    Copy to Clipboard Toggle word wrap

    /health HTTP エンドポイントと、readinesslivenessstartup プローブをチェックする :check 操作も、これらの属性を考慮に入れます。

これらの属性は以下の例のように変更することもできます。

/subsystem=microprofile-health-smallrye:write-attribute(name=empty-readiness-checks-status,value=DOWN)
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
Copy to Clipboard Toggle word wrap

3.5. MicroProfile JWT 設定

3.5.1. microprofile-jwt-smallrye サブシステムの有効化

MicroProfile JWT 統合は microprofile-jwt-smallrye サブシステムによって提供され、デフォルト設定に含まれています。サブシステムがデフォルト設定に存在しない場合は、以下のように追加できます。

前提条件

  • JBoss EAP 8.0 と JBoss EAP XP 5.0 がインストールされている。

手順

  1. JBoss EAP で MicroProfile JWT smallrye 拡張を有効にします。

    /extension=org.wildfly.extension.microprofile.jwt-smallrye:add
    Copy to Clipboard Toggle word wrap
  2. microprofile-jwt-smallrye サブシステムを有効にします。

    /subsystem=microprofile-jwt-smallrye:add
    Copy to Clipboard Toggle word wrap
  3. サーバーをリロードします。

    reload
    Copy to Clipboard Toggle word wrap

microprofile-jwt-smallrye サブシステムが有効になります。

3.6. MicroProfile OpenAPI の管理

3.6.1. MicroProfile OpenAPI の有効化

microprofile-openapi-smallrye サブシステムは、standalone-microprofile.xml 設定で提供されます。しかし、JBoss EAP XP はデフォルトで standalone.xml を使用します。使用するには、standalone.xml にサブシステムを含める必要があります。

または、MicroProfile サブシステムおよびエクステンションでのスタンドアロン設定の更新 の手順に従い、standalone.xml 設定ファイルを更新できます。

手順

  1. JBoss EAP で MicroProfile OpenAPI smallrye 拡張を有効にします。

    /extension=org.wildfly.extension.microprofile.openapi-smallrye:add()
    Copy to Clipboard Toggle word wrap
  2. 以下の管理コマンドを使用して microprofile-openapi-smallrye サブシステムを有効にします。

    /subsystem=microprofile-openapi-smallrye:add()
    Copy to Clipboard Toggle word wrap
  3. サーバーをリロードします。

    reload
    Copy to Clipboard Toggle word wrap

microprofile-openapi-smallrye サブシステムが有効化されます。

3.6.2. Accept HTTP ヘッダーを使用した MicroProfile OpenAPI ドキュメントリクエスト

Accept HTTP ヘッダーを使用してデプロイメントから MicroProfile OpenAPI ドキュメントをリクエストします。

デフォルトでは、OpenAPI エンドポイントはで YAML ドキュメントを返します。

前提条件

  • クエリーされるデプロイメントは、MicroProfile OpenAPI ドキュメントを返すように設定されます。

手順

  • 以下の curl コマンドを実行して、デプロイメントの /openapi エンドポイントをクエリーします。

    $ curl -v -H'Accept: application/json' http://localhost:8080/openapi
    < HTTP/1.1 200 OK
    ...
    {"openapi": "3.0.1" ... }
    Copy to Clipboard Toggle word wrap

    http://localhost:8080 を、デプロイメントの URL およびポートに置き換えます。

    Accept ヘッダーは、JSON ドキュメントが application/json 文字列を使用して返されることを示します。

3.6.3. HTTP パラメーターを使用した MicroProfile OpenAPI ドキュメントのリクエスト

HTTP リクエストでクエリーパラメーターを使用してデプロイメントから MicroProfile OpenAPI ドキュメントを JSON 形式でリクエストします。

デフォルトでは、OpenAPI エンドポイントはで YAML ドキュメントを返します。

前提条件

  • クエリーされるデプロイメントは、MicroProfile OpenAPI ドキュメントを返すように設定されます。

手順

  • 以下の curl コマンドを実行して、デプロイメントの /openapi エンドポイントをクエリーします。

    $ curl -v http://localhost:8080/openapi?format=JSON
    < HTTP/1.1 200 OK
    ...
    Copy to Clipboard Toggle word wrap

    http://localhost:8080 を、デプロイメントの URL およびポートに置き換えます。

    HTTP パラメーターの format=JSON は JSON ドキュメントが返されることを示します。

3.6.4. 静的 OpenAPI ドキュメントを提供するよう JBoss EAP を設定

ホストの REST サービスを記述する静的 OpenAPI ドキュメントに対応するように JBoss EAP を設定します。

JBoss EAP が静的 OpenAPI ドキュメントを提供するよう設定されている場合、静的 OpenAPI ドキュメントは Jakarta RESTful Web Services および MicroProfile OpenAPI アノテーションの前に処理されます。

実稼働環境では、静的ドキュメントを提供するときにアノテーション処理を無効にします。アノテーション処理を無効にすると、イミュータブルでバージョン付けできない API コントラクトがクライアントで利用可能になります。

手順

  1. アプリケーションソースツリーにディレクトリーを作成します。

    $ mkdir APPLICATION_ROOT/src/main/webapp/META-INF
    Copy to Clipboard Toggle word wrap

    APPLICATION_ROOT は、アプリケーションの pom.xml 設定ファイルが含まれるディレクトリーです。

  2. OpenAPI エンドポイントをクエリーし、出力をファイルにリダイレクトします。

    $ curl http://localhost:8080/openapi?format=JSON > src/main/webapp/META-INF/openapi.json
    Copy to Clipboard Toggle word wrap

    デフォルトでは、エンドポイントは YAML ドキュメントを提供し、format=JSON は JSON ドキュメントを返すことを指定します。

  3. OpenAPI ドキュメントモデルの処理時にアノテーションのスキャンを省略するようにアプリケーションを設定します。

    $ echo "mp.openapi.scan.disable=true" > APPLICATION_ROOT/src/main/webapp/META-INF/microprofile-config.properties
    Copy to Clipboard Toggle word wrap
  4. アプリケーションをリビルドします。

    $ mvn clean install
    Copy to Clipboard Toggle word wrap
  5. 以下の管理 CLI コマンドを使用してアプリケーションを再度デプロイします。

    1. アプリケーションのアンデプロイ:

      undeploy microprofile-openapi.war
      Copy to Clipboard Toggle word wrap
    2. アプリケーションのデプロイ:

      deploy APPLICATION_ROOT/target/microprofile-openapi.war
      Copy to Clipboard Toggle word wrap

JBoss EAP は OpenAPI エンドポイントで静的 OpenAPI ドキュメントを提供するようになりました。

3.6.5. microprofile-openapi-smallrye の無効化

管理 CLI を使用すると、JBoss EAP XP の microprofile-openapi-smallrye サブシステムを無効にすることができます。

手順

  • microprofile-openapi-smallrye サブシステムを無効にします。

    /subsystem=microprofile-openapi-smallrye:remove()
    Copy to Clipboard Toggle word wrap

3.7. MicroProfile Reactive Messaging の管理

JBoss EAP のインスタンスに対して非同期リアクティブメッセージングを有効にする場合は、JBoss EAP 管理 CLI を介してそのエクステンションを追加する必要があります。

前提条件

手順

  1. JBoss EAP 管理 CLI を開きます。
  2. 次のコードを入力します。
[standalone@localhost:9990 /] /extension=org.wildfly.extension.microprofile.reactive-messaging-smallrye:add
{"outcome" => "success"}

[standalone@localhost:9990 /] /subsystem=microprofile-reactive-messaging-smallrye:add
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
Copy to Clipboard Toggle word wrap
注記

OpenShift であるかどうかにかかわらず、Galleon を使用してサーバーをプロビジョニングする場合は、microprofile-reactive-messaging Galleon レイヤーを含めて、コアの MicroProfile 2.0.1 とリアクティブメッセージング機能を取得し、必要なサブシステムとエクステンションを有効にしてください。この設定には、コネクターを有効にするために必要な JBoss EAP モジュールが含まれていないことに注意してください。microprofile-reactive-messaging-kafka レイヤーまたは microprofile-reactive-messaging-amqp レイヤーを使用して、それぞれ Kafka コネクターまたは AMQP コネクターを有効にします。

検証

管理 CLI の結果のコードで 2 つの場所で success が見られた場合は、JBoss EAP に必要な MicroProfile Reactive Messaging エクステンションとサブシステムが正常に追加されています。

ヒント

結果のコードに reload-required と表示されている場合は、サーバー設定をリロードして、すべての変更を完全に適用する必要があります。リロードするには、スタンドアロンサーバー CLI で reload と入力します。

3.8. スタンドアロンサーバー設定

3.8.1. スタンドアロンサーバー設定ファイル

JBoss EAP XP に、スタンドアロン設定ファイル standalone-microprofile.xml および standalone-microprofile-ha.xml が含まれるようになりました。

JBoss EAP に含まれる標準設定ファイルは変更されません。JBoss EAP XP 5.0.0 は domain.xml ファイルまたはドメインモードの使用をサポートしていないことに注意してください。

Expand
表3.1 JBoss EAP XP で利用可能なスタンドアロン設定ファイル
設定ファイル目的含まれる機能除外された機能

standalone.xml

これは、スタンドアロンサーバーの起動時に使用されるデフォルト設定です。

サブシステム、ネットワーキング、デプロイメント、ソケットバインディング、およびその他の設定詳細など、サーバーに関するすべての情報が含まれます。

メッセージングまたは高可用性に必要なサブシステムを除外します。

standalone-microprofile.xml

この設定ファイルは、MicroProfile を使用するアプリケーションをサポートします。

サブシステム、ネットワーキング、デプロイメント、ソケットバインディング、およびその他の設定詳細など、サーバーに関するすべての情報が含まれます。

以下の機能を除外します。

  • Jakarta Enterprise Beans
  • Messaging
  • Jakarta EE Batch
  • Jakarta Server Faces
  • Jakarta Enterprise Beans タイマー

standalone-ha.xml

 

デフォルトのサブシステムが含まれ、高可用性のために modcluster および jgroups サブシステムを追加します。

メッセージングに必要なサブシステムを除外します。

standalone-microprofile-ha.xml

このスタンドアロンファイルは、MicroProfile を使用するアプリケーションをサポートします。

デフォルトのサブシステムに加えて、高可用性向けの modcluster および jgroups サブシステムが含まれます。

メッセージングに必要なサブシステムを除外します。

standalone-full.xml

 

デフォルトのサブシステムに加えて、messaging-activemq および iiop-openjdk サブシステムが含まれます。

 

standalone-full-ha.xml

考えられるすべてのサブシステムのサポート。

デフォルトのサブシステムに加えて、メッセージングおよび高可用性のサブシステムが含まれます。

 

standalone-load-balancer.xml

ビルトインの mod_cluster フロントエンドロードバランサーを使用して他の JBoss EAP インスタンスの負荷を分散するために必要な最低限のサブシステムのサポート。

  

デフォルトでは、スタンドアロンサーバーとして JBoss EAP を起動すると standalone.xml ファイルが使用されます。スタンドアロン MicroProfile 設定で JBoss EAP を起動するには、-c 引数を使用します。以下に例を示します。

$ <EAP_HOME>/bin/standalone.sh -c=standalone-microprofile.xml
Copy to Clipboard Toggle word wrap

3.8.2. MicroProfile サブシステムおよびエクステンションでのスタンドアロン設定の更新

docs/examples/enable-microprofile.cli スクリプトを使用すると、標準のスタンドアロンサーバー設定ファイルを MicroProfile サブシステムおよび拡張機能で更新できます。enable-microprofile.cli スクリプトは、カスタム設定ではなく、標準のスタンドアロンサーバー設定ファイルを更新するサンプルスクリプトです。

enable-microprofile.cli スクリプトは、既存のスタンドアロンサーバー設定を変更し、以下の MicroProfile サブシステムおよび拡張機能がない場合はスタンドアロン設定ファイルに追加します。

  • microprofile-config-smallrye
  • microprofile-fault-tolerance-smallrye
  • microprofile-health-smallrye
  • microprofile-jwt-smallrye
  • microprofile-openapi-smallrye

enable-microprofile.cli スクリプトは、変更のハイレベルな説明を出力します。設定は elytron サブシステムを使用してセキュア化されます。security がある場合は、設定から削除されます。

前提条件

  • JBoss EAP 8.0 と JBoss EAP XP 5.0 がインストールされている。

手順

  1. 以下の CLI スクリプトを実行して、デフォルトの standalone.xml サーバー設定ファイルを更新します。

    $ <EAP_HOME>/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli
    Copy to Clipboard Toggle word wrap
  2. 以下のコマンドを使用して、デフォルトの standalone.xml サーバー設定ファイル以外のスタンドアロンサーバー設定を選択します。

    $ <EAP_HOME>/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli -Dconfig=<standalone-full.xml|standalone-ha.xml|standalone-full-ha.xml>
    Copy to Clipboard Toggle word wrap
  3. 指定した設定ファイルに MicroProfile サブシステムおよび拡張機能が含まれるようになりました。

第4章 JBoss EAP の MicroProfile アプリケーションの開発

MicroProfile API を使用するアプリケーションの開発を開始するには、Maven プロジェクトを作成し、必要な依存関係を定義します。JBoss EAP MicroProfile Bill of Materials (BOM) を使用して、アプリケーションの Project Object Model (POM) 内のランタイム Maven 依存関係のバージョンを制御します。

Maven プロジェクトを作成した後、特定の MicroProfile API 用のアプリケーションの開発に関する情報は、JBoss EAP XP クイックスタートを参照してください。詳細は、JBoss EAP XP クイックスタート を参照してください。

4.1. maven-archetype-webapp を使用した Maven プロジェクトの作成

maven-archetype-webapp アーキタイプを使用して、JBoss EAP にデプロイするアプリケーションをビルドするための Maven プロジェクトを作成します。Maven には、プロジェクトタイプに特化したテンプレートをベースにプロジェクトを作成できるさまざまなアーキタイプがあります。maven-archetype-webapp は、シンプルな Web アプリケーションの開発に必要な構造を持つプロジェクトを作成します。

前提条件

手順

  1. mvn コマンドを使用して Maven プロジェクトをセットアップします。このコマンドは、プロジェクトのディレクトリー構造と pom.xml 設定ファイルを作成します。

    $ mvn archetype:generate                       \
    -DgroupId=<group_id>                           \
    1
    
    -DartifactId=<artifact_id>                     \
    2
    
    -DarchetypeGroupId=org.apache.maven.archetypes \
    3
    
    -DarchetypeArtifactId=maven-archetype-webapp   \
    4
    
    -DinteractiveMode=false                         
    5
    Copy to Clipboard Toggle word wrap
    1
    groupID はプロジェクトを一意に識別するものです。
    2
    artifactID は生成された jar アーカイブの名前です。
    3
    archetypeGroupIDmaven-archetype-webapp の一意の ID です。
    4
    archetypeArtifactIdmaven-archetype-webapp のアーティファクト ID です。
    5
    InteractiveMode は、対話モードで起動するのではなく、指定されたパラメーターを使用するように Maven に指示します。
  2. 生成されたディレクトリーに移動します。
  3. 生成された pom.xml 設定ファイルをテキストエディターで開きます。
  4. pom.xml 設定ファイルの <project> セクション内にある <name>helloworld Maven Webapp</name> 行の後ろの内容を削除します。

    ファイルが次のようになっていることを確認します。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>${group_id}</groupId>
        <artifactId>${artifact_id}</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>${artifact_id} Maven Webapp</name>
    
    </project>
    Copy to Clipboard Toggle word wrap

    内容を削除したのは、アプリケーションには不要なためです。

4.2. Maven プロジェクトのプロパティーの定義

Maven の pom.xml 設定ファイルで、プロパティーを値のプレースホルダーとして定義できます。JBoss EAP XP サーバーの値をプロパティーとして定義し、設定内でその値を一貫して使用します。

前提条件

手順

  • <version.bom.microprofile> プロパティーを、設定したアプリケーションのデプロイ先となる JBoss EAP XP バージョンとして定義します。

    <project>
        ...
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <version.bom.microprofile>5.0.0.GA-redhat-00009</version.bom.microprofile>
        </properties>
    </project>
    Copy to Clipboard Toggle word wrap

4.3. Maven プロジェクトのリポジトリーの定義

Maven でダウンロードするアーティファクトとプラグインを検索するアーティファクトリポジトリーとプラグインリポジトリーを定義します。

前提条件

手順

  1. アーティファクトリポジトリーを定義します。

    <project>
        ...
        <repositories>
            <repository>                                                                
    1
    
                <id>jboss-public-maven-repository</id>
                <name>JBoss Public Maven Repository</name>
                <url>https://repository.jboss.org/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </snapshots>
                <layout>default</layout>
            </repository>
            <repository>                                                                
    2
    
                <id>redhat-ga-maven-repository</id>
                <name>Red Hat GA Maven Repository</name>
                <url>https://maven.repository.redhat.com/ga/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </snapshots>
                <layout>default</layout>
            </repository>
        </repositories>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    Red Hat GA Maven リポジトリーは、製品化されたすべての JBoss EAP アーティファクトとその他の Red Hat アーティファクトを提供します。
    2
    JBoss Public Maven リポジトリーは、WildFly Maven プラグインなどのアーティファクトを提供します。
  2. プラグインリポジトリーを定義します。

    <project>
        ...
        <pluginRepositories>
            <pluginRepository>
                <id>jboss-public-maven-repository</id>
                <name>JBoss Public Maven Repository</name>
                <url>https://repository.jboss.org/nexus/content/groups/public/</url>
                <releases>
                   <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
            <pluginRepository>
                <id>redhat-ga-maven-repository</id>
                <name>Red Hat GA Maven Repository</name>
                <url>https://maven.repository.redhat.com/ga/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </project>
    Copy to Clipboard Toggle word wrap

4.4. Maven プロジェクトで依存関係管理として JBoss EAP MicroProfile BOM のインポート

JBoss EAP MicroProfile Bill of Materials (BOM) をインポートして、ランタイム Maven 依存関係のバージョンを制御します。<dependencyManagement> セクションで BOM を指定する場合、provided スコープで定義されている Maven 依存関係のバージョンを個別に指定する必要はありません。

前提条件

手順

  1. pom.xml 設定ファイルの properties セクションに BOM バージョンのプロパティーを追加します。

    <properties>
        ...
        <version.bom.microprofile>5.0.0.GA-redhat-00009</version.bom.microprofile>
    </properties>
    Copy to Clipboard Toggle word wrap

    <version.bom.microprofile> プロパティーで定義された値が、BOM バージョンの値として使用されます。

  2. JBoss EAP BOM の依存関係管理をインポートします。

    <project>
        ...
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.jboss.bom</groupId>                   
    1
    
                    <artifactId>jboss-eap-xp-microprofile</artifactId> 
    2
    
                    <version>${version.bom.microprofile}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    JBoss EAP が提供する BOM の groupID。
    2
    サポートされている JBoss EAP MicroProfile API を提供する JBoss EAP 提供の BOM の artifactID。

オプションで、Tools Bill を含む JBoss EAP EE をプロジェクトにインポートできます。詳細は、Maven プロジェクトの依存関係管理として JBoss EAP BOM をインポートする を参照してください。

4.5. Maven プロジェクトの依存関係管理として JBoss EAP BOM をインポートする

オプションで、JBoss EAP EE With Tools Bill of materials (BOM) をインポートできます。JBoss EAP BOM は、サポートされている JBoss EAP Java EE API に加えて、追加の JBoss EAP API JAR とクライアント BOM を提供します。アプリケーションで Microprofile API に加えて Jakarta EE API が必要な場合にのみ、この BOM をインポートする必要があります。

前提条件

手順

  1. pom.xml 設定ファイルの properties セクションに BOM バージョンのプロパティーを追加します。

    <properties>
        ....
        <version.bom.ee>8.0.0.GA-redhat-00009</version.bom.ee>
    </properties>
    Copy to Clipboard Toggle word wrap
  2. JBoss EAP BOM の依存関係管理をインポートします。

    <project>
        ...
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.jboss.bom</groupId>                 
    1
    
                    <artifactId>jboss-eap-ee-with-tools</artifactId> 
    2
    
                    <version>${version.bom.ee}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    JBoss EAP が提供する BOM の groupID。
    2
    JBoss EAP が提供する BOM の artifactID。この BOM は、サポートされている JBoss EAP Java EE API に加えて、追加の JBoss EAP API JAR およびクライアント BOM、および Arquillian などの開発ツールを提供します。

4.6. Maven プロジェクトへのプラグイン管理の追加

Maven CLI コマンドに必要なプラグインを取得するために、Maven プラグイン管理セクションを pom.xml 設定ファイルに追加します。

前提条件

手順

  1. <properties> セクションで、wildfly-maven-plugin および maven-war-plugin のバージョンを定義します。

    <properties>
        ...
        <version.plugin.wildfly>4.2.1.Final</version.plugin.wildfly>
        <version.plugin.war>3.3.2</version.plugin.war>
    </properties>
    Copy to Clipboard Toggle word wrap
  2. <project> セクション内の <build> セクションに <pluginManagement> を追加します。

    <project>
        ...
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>    
    1
    
                        <groupId>org.wildfly.plugins</groupId>
                        <artifactId>wildfly-maven-plugin</artifactId>
                        <version>${version.plugin.wildfly}</version>
                    </plugin>
                    <plugin>                                  
    2
    
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>${version.plugin.war}</version>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    wildfly-maven-plugin を使用すると、wildfly:deploy コマンドを使用してアプリケーションを JBoss EAP にデプロイできます。
    2
    JDK17+ との互換性を確保するには、war プラグインのバージョンを管理する必要があります。

4.7. Maven プロジェクトの検証

設定した Maven プロジェクトがビルドされることを確認します。

前提条件

手順

  • pom.xml に追加した Maven 依存関係をローカルにインストールします。

    $ mvn package
    Copy to Clipboard Toggle word wrap

    次のような出力が得られます。

    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    ...
    Copy to Clipboard Toggle word wrap

特定の MicroProfile API 向けのアプリケーションの開発に関する詳細は、JBoss EAP XP クイックスタート を参照してください。

第5章 Micrometer の統合を理解する

5.1. JBoss EAP の Micrometer

JBoss EAP の Micrometer 統合により、アプリケーション全体のパフォーマンスメトリクスを登録および追跡するための再利用可能な API を備えたベンダー中立の可観測性レイヤーが導入されます。この拡張機能は Micrometer と統合されており、デプロイされたアプリケーションが API にアクセスし、拡張機能に提供されるサーバーメトリクスとともにアプリケーション固有のメトリクスを表示できるようになります。

注記

JBoss EAP は既存のメトリクスサブシステムを使用します。この拡張機能を手動で追加して設定する必要があります。

第6章 JBoss EAP で Micrometer の管理

6.1. 管理 CLI を使用して Micrometer サブシステムの追加

Micrometer サブシステムは、包括的なメトリクスの収集と公開を容易にすることで、JBoss EAP の監視機能を強化します。ただし、org.jboss.extension.micrometer サブシステムは、JBoss EAP ディストリビューション内のすべてのスタンドアロン設定で使用できますが、手動で追加する必要があります。

前提条件

  • JBoss EAP 8.0 と JBoss EAP XP 5.0 がインストールされている。
  • JBoss EAP 管理 CLI にアクセスでき、設定を変更する権限がある。

手順

  1. ターミナルを開きます。
  2. 次のコマンドを実行してサーバーに接続します。

    ./jboss-cli.sh --connect
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、Micrometer 拡張機能がすでに設定に追加されているかどうかを確認します。

    [standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:read-resource
    Copy to Clipboard Toggle word wrap
  4. Micrometer 拡張機能が利用できない場合は、次のコマンドを実行して追加します。

    [standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:add
    Copy to Clipboard Toggle word wrap
  5. 必要な設定で Micrometer サブシステムを追加します。たとえば、次のコマンドを実行して、メトリクスコレクターのエンドポイント URL を指定します。

    [standalone@localhost:9990 /] /subsystem=micrometer:add(endpoint="http://localhost:4318/v1/metrics")
    Copy to Clipboard Toggle word wrap
  6. 変更を適用するには、サーバーをリロードします。

    [standalone@localhost:9990 /] reload
    Copy to Clipboard Toggle word wrap
注記

コレクターが実行されていない場合、またはそのコレクターエンドポイントが利用できない場合は、次のような警告メッセージがトリガーされます。

11:28:16,581 WARNING [io.micrometer.registry.otlp.OtlpMeterRegistry] (MSC service thread 1-5) Failed to publish metrics to OTLP receiver: java.net.ConnectException: Connection refused
Copy to Clipboard Toggle word wrap

以下の手順に従うと、管理 CLI を使用して Micrometer サブシステムを JBoss EAP サーバーに追加し、アプリケーションの監視機能を強化できます。

第7章 JBoss EAP 用 Micrometer アプリケーションの開発

7.1. JBoss EAP に Micrometer メトリクスを統合

Micrometer を使用すると、JBoss EAP でアプリケーションメトリクスを監視および収集できます。Micrometer サポートにより、アプリケーションメトリクスが公開されます。エクスポートプロセスは PUSH ベースであり、メトリクスが OpenTelemetry Collector に送信されるようにします。

前提条件

  • JDK 17 がインストールされている。
  • Maven 3.6 以降のバージョンがインストールされている。詳細は、Downloading Apache Maven を参照してください。
  • Docker がインストールされている。詳細は、Get Docker を参照してください。
  • オプション: システムに podman がインストールされている。サポート対象の RHEL で利用可能な最新の podman バージョンを使用してください。詳細は、Red Hat JBoss Enterprise Application Platform 8.0 でサポートされる構成 を参照してください。
  • configure-micrometer.cli ファイルは、アプリケーションのルートディレクトリーにあります。
注記

このセクションの例 (configure-micrometer.cli ファイルの使用方法を含む) は、Micrometer クイックスタート に基づいています。

手順

  1. 端末を開きます。
  2. 次のスクリプトを使用して、JBoss EAP をスタンドアロンサーバーとして起動します。

    $ <EAP_HOME>/bin/standalone.sh -c standalone-microprofile.xml
    Copy to Clipboard Toggle word wrap
    注記

    Windows Server の場合は、<EAP_HOME>\bin\standalone.bat スクリプトを使用します。

  3. 新しいターミナルを開きます。
  4. アプリケーションのルートディレクトリーに移動します。
  5. サーバーを設定するには、次のコマンドを実行します。

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --file=configure-micrometer.cli
    Copy to Clipboard Toggle word wrap
    注記

    Windows Server の場合は、<EAP_HOME>\bin\jboss-cli.bat スクリプトを使用します。

    <EAP_HOME> をサーバーへのパスに置き換えます。

    想定される出力:

    The batch executed successfully
    process-state: reload-required
    Copy to Clipboard Toggle word wrap

  6. 以下の管理コマンドでサーバーをリロードします。

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --commands=reload
    Copy to Clipboard Toggle word wrap
  7. 次の内容を含む docker-compose.yaml という名前の設定ファイルを作成します。

    version: "3"
    
    services:
      otel-collector:
        image: otel/opentelemetry-collector
        command: [--config=/etc/otel-collector-config.yaml]
        volumes:
          - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:Z
        ports:
          - 1888:1888 # pprof extension
          - 8888:8888 # Prometheus metrics exposed by the collector
          - 8889:8889 # Prometheus exporter metrics
          - 13133:13133 # health_check extension
          - 4317:4317 # OTLP gRPC receiver
          - 4318:4318 # OTLP http receiver
          - 55679:55679 # zpages extension
          - 1234:1234 # /metrics endpoint
    Copy to Clipboard Toggle word wrap
  8. 次の内容を含む otel-collector-config.yaml という名前の設定ファイルを作成します。

    extensions:
      health_check:
      pprof:
        endpoint: 0.0.0.0:1777
      zpages:
        endpoint: 0.0.0.0:55679
    
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    
    processors:
      batch:
    
    exporters:
      prometheus:
        endpoint: "0.0.0.0:1234"
    
    service:
      pipelines:
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [prometheus]
    
      extensions: [health_check, pprof, zpages]
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、コレクターサーバーインスタンスを起動します。

    $ docker-compose up
    Copy to Clipboard Toggle word wrap
    注記

    Docker の代わりに Podman を使用することもできます。Podman を選択した場合は、$ docker-compose up ではなく $ podman-compose up コマンドを使用します。ご使用の環境で Docker または Podman がサポートされていない場合は、Otel Collector のドキュメント で OpenTelemetry Collector のインストールと実行に関するガイダンスを参照してください。

  10. RootResource クラスでは、メーター登録前に適切なセットアップを確実に行うために、MeterRegistry がクラスに挿入される方法を確認します。

    @Path("/")
    @ApplicationScoped
    public class RootResource {
        // ...
        @Inject
        private MeterRegistry registry;
    
        private Counter performCheckCounter;
        private Counter originalCounter;
        private Counter duplicatedCounter;
    
        @PostConstruct
        private void createMeters() {
            Gauge.builder("prime.highestSoFar", () -> highestPrimeNumberSoFar)
                    .description("Highest prime number so far.")
                    .register(registry);
            performCheckCounter = Counter
                    .builder("prime.performedChecks")
                    .description("How many prime checks have been performed.")
                    .register(registry);
            originalCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "original")))
                    .register(registry);
            duplicatedCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "copy")))
                    .register(registry);
        }
        // ...
    }
    Copy to Clipboard Toggle word wrap
  11. checkIfPrime() メソッド本体を調べて、登録されたメーターがアプリケーションロジック内でどのように使用されるかを確認します。以下に例を示します。

    @GET
    @Path("/prime/{number}")
    public String checkIfPrime(@PathParam("number") long number) throws Exception {
        performCheckCounter.increment();
    
        Timer timer = registry.timer("prime.timer");
    
        return timer.recordCallable(() -> {
    
            if (number < 1) {
                return "Only natural numbers can be prime numbers.";
            }
    
            if (number == 1) {
                return "1 is not prime.";
            }
    
            if (number == 2) {
                return "2 is prime.";
            }
    
            if (number % 2 == 0) {
                return number + " is not prime, it is divisible by 2.";
            }
    
            for (int i = 3; i < Math.floor(Math.sqrt(number)) + 1; i = i + 2) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    //
                }
                if (number % i == 0) {
                    return number + " is not prime, is divisible by " + i + ".";
                }
            }
    
            if (number > highestPrimeNumberSoFar) {
                highestPrimeNumberSoFar = number;
            }
    
            return number + " is prime.";
        });
    }
    Copy to Clipboard Toggle word wrap
  12. アプリケーションのルートディレクトリーに移動します。

    構文

    $ cd <path_to_application_root>/<application_root>
    Copy to Clipboard Toggle word wrap

    Micrometer Quickstart を参考にした例:

    $ cd ~/quickstarts/micrometer
    Copy to Clipboard Toggle word wrap

  13. 次のコマンドを使用して、アプリケーションをコンパイルおよびデプロイします。

    $ mvn clean package wildfly:deploy
    Copy to Clipboard Toggle word wrap

これにより、実行中のサーバーに micrometer/target/micrometer.war がデプロイされます。

検証

  1. Web ブラウザー を使用してアプリケーションにアクセスするか、次のコマンドを実行します。

    $ curl http://localhost:8080/micrometer/prime/13
    Copy to Clipboard Toggle word wrap

    想定される出力:

    13 is prime.
    Copy to Clipboard Toggle word wrap

JBoss EAP XP の OpenShift イメージでマイクロサービスアプリケーションをビルドし、実行できます。

注記

JBoss EAP XP は、OpenShift 4 以降のバージョンでのみサポートされます。

以下のワークフローを使用して、Source-to-Image (S2I) プロセスで JBoss EAP XP の OpenShift イメージでマイクロサービスアプリケーションをビルドし、実行します。

注記

デフォルトの cloud-default-mp-config レイヤーは、standalone-microprofile-ha.xml ファイルに基づくスタンドアロン設定ファイルを提供します。JBoss EAP XP に含まれるサーバー設定ファイルの詳細は、スタンドアロンサーバー設定ファイル を参照してください。

このワークフローでは、例として microprofile-config クイックスタートを使用します。クイックスタートでは、独自のプロジェクトの参照として使用できる小規模の、特定の作業例を示します。詳細は、JBoss EAP XP 5.0.0 に同梱される microprofile-config クイックスタートを参照してください。

関連情報

8.1. アプリケーションのデプロイメントに向けた OpenShift の準備

アプリケーションのデプロイメントに向けて OpenShift を準備します。

前提条件

稼働中の OpenShift インスタンスがインストールされている。詳細は、Red Hat カスタマーポータルOpenShift Container Platform クラスターのインストールおよび設定 を参照してください。

手順

  1. oc login コマンドを使用して、OpenShift インスタンスにログインします。
  2. OpenShift で新しいプロジェクトを作成します。

    プロジェクトでは、1 つのユーザーグループが他のグループとは別にコンテンツを整理および管理することができます。以下のコマンドを使用すると OpenShift でプロジェクトを作成できます。

    $ oc new-project PROJECT_NAME
    Copy to Clipboard Toggle word wrap

    たとえば、以下のコマンドを使用して、microprofile-config クイックスタートで eap-demo という名前の新規プロジェクトを作成します。

    $ oc new-project eap-demo
    Copy to Clipboard Toggle word wrap

8.2. S2I を使用した JBoss EAP XP アプリケーションイメージの構築とデプロイ

Source-to-Image (S2I) ワークフローに従って、JBoss EAP XP アプリケーションの再現可能なコンテナーイメージをビルドします。これらの生成されたコンテナーイメージには、アプリケーションのデプロイメントとすぐに実行できる JBoss EAP XP サーバーが含まれます。

S2I ワークフローは、Git リポジトリーからソースコードを取得し、使用する言語とフレームワークをベースとするコンテナーに挿入します。S2I ワークフローが完了すると、src コードがコンパイルされ、アプリケーションがパッケージ化されて JBoss EAP XP サーバーにデプロイされます。

前提条件

  • アクティブな Red Hat カスタマーアカウントを持っている。
  • レジストリーサービスアカウントを持っている。Red Hat カスタマーポータルの手順に従い、レジストリーサービスアカウントを使用して認証トークンを作成 してください。
  • Red Hat Ecosystem Catalog からイメージをプルするために使用できる OpenShift シークレット YAML ファイルをダウンロードしている。詳細は、OpenShift Secret を参照してください。
  • oc login コマンドを使用して OpenShift にログインしている。
  • Helm がインストールされている。詳細は、Installing Helm を参照してください。
  • 管理 CLI で次のコマンドを入力して、JBoss EAP Helm チャートのリポジトリーをインストールしている。

    $ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
    Copy to Clipboard Toggle word wrap

手順

  1. 次の YAML コンテンツを使用して、helm.yaml という名前のファイルを作成します。

    build:
      uri: https://github.com/jboss-developer/jboss-eap-quickstarts.git
      ref: XP_5.0.0.GA
      contextDir: microprofile-config
      mode: s2i
    deploy:
      replicas: 1
    Copy to Clipboard Toggle word wrap
  2. 以下のコマンドを使用して、JBoss EAP XP アプリケーションを OpenShift にデプロイします。

    $ helm install microprofile-config -f helm.yaml jboss-eap/eap-xp5
    Copy to Clipboard Toggle word wrap
注記

詳細は、OpenShift で Source-to-Image を使用したアプリケーションイメージのビルド の手順と非常によく似ています。この手順の詳細は、OpenShift Container Platform での JBoss EAP の使用 を参照してください。

検証

  • curl を使用してアプリケーションにアクセスします。

    $ curl https://$(oc get route microprofile-config --template='{{ .spec.host }}')/config/value
    Copy to Clipboard Toggle word wrap

    アプリケーションがデプロイされたことを確認する出力 MyPropertyFileConfigValue が表示されます。

8.3. JBoss EAP XP Source-to-Image (S2I) アプリケーションのデプロイメント後タスクの完了

アプリケーションによっては、OpenShift アプリケーションのビルドおよびデプロイ後に一部のタスクを完了する必要がある場合があります。

デプロイメント後タスクの例には、以下が含まれます。

  • アプリケーションを OpenShift の外部から表示できるようにサービスを公開します。
  • アプリケーションを特定のレプリカ数にスケーリングします。

手順

  1. 以下のコマンドを使用してアプリケーションのサービス名を取得します。

    $ oc get service
    Copy to Clipboard Toggle word wrap
  2. オプション: メインサービスをルートとして公開し、OpenShift 外部からアプリケーションにアクセスできるようにします。たとえば、microprofile-config クイックスタートでは、以下のコマンドを使用して必要なサービスとポートを公開します。

    $ oc expose service/microprofile-config --port=8080
    Copy to Clipboard Toggle word wrap
  3. ルートの URL を取得します。

    $ oc get route
    Copy to Clipboard Toggle word wrap
  4. この URL を使用して web ブラウザーでアプリケーションにアクセスします。URL は前のコマンド出力にある HOST/PORT フィールドの値になります。

    注記

    JBoss EAP XP 5.0.0 GA ディストリビューションでは、Microprofile Config クイックスタートはアプリケーションのルートコンテキストに対して HTTPS GET リクエストに応答しません。今回の機能拡張は、{JBossXPShortName101} GA ディストリビューションでのみ利用可能です。

    たとえば、Microprofile Config アプリケーションと対話するには、ブラウザーの URL は http://HOST_PORT_Value/config/value になります。

    アプリケーションが JBoss EAP ルートコンテキストを使用しない場合、アプリケーションのコンテキストを URL に追加します。たとえば、microprofile-config クイックスタートの URL は http://HOST_PORT_VALUE/microprofile-config/ のようになります。

  5. 任意で、以下のコマンドを実行してアプリケーションインスタンスをスケールアップすることもができます。このコマンドにより、レプリカ数が 3 に増えます。

    $ oc scale deploymentconfig DEPLOYMENTCONFIG_NAME --replicas=3
    Copy to Clipboard Toggle word wrap

    たとえば、microprofile-config クイックスタートでは、以下のコマンドを使用してアプリケーションをスケールアップします。

    $ oc scale deployment/microprofile-config --replicas=3
    Copy to Clipboard Toggle word wrap

関連情報

JBoss EAP XP クイックスタートの詳細は、MicroProfile in JBoss EAP の使用 ガイドの クイックスタートの使用 セクションを参照してください。

第9章 機能のトリム

起動可能な JAR をビルドする場合、含まれる JBoss EAP の機能とサブシステムを決定できます。

注記

機能のトリムは、OpenShift 上で、または起動可能な JAR のビルド時にのみサポートされます。

9.1. 利用可能な JBoss EAP レイヤー

Red Hat は、OpenShift または起動可能な JAR での JBoss EAP サーバーのプロビジョニングをカスタマイズするために複数のレイヤーを提供します。

3 つの層は、コア機能を提供するベースレイヤーです。他のレイヤーは、追加機能を備えたベースレイヤーを強化するデコレーターレイヤーです。

ほとんどのデコレーターレイヤーを使用して、JBoss EAP for OpenShift で S2I イメージをビルドしたり、起動可能な JAR をビルドしたりできます。一部のレイヤーは S2I イメージをサポートしません。レイヤーノートの説明は、この制限の説明になります。

注記

リスト表示されたレイヤーのみがサポートされます。ここで記載されていないレイヤーはサポートされません。

9.1.1. ベースレイヤー

各ベースレイヤーには、典型的なサーバーユーザーケースのコア機能が含まれています。

datasources-web-server

このレイヤーには、サーブレットコンテナーが含まれ、データソースを設定する機能が含まれます。

このレイヤーには MicroProfile 機能が含まれません。

このレイヤーでは、以下の Jakarta EE 仕様がサポートされます。

  • Jakarta JSON Processing 1.1
  • Jakarta JSON Binding 1.0
  • Jakarta Servlet 4.0
  • Jakarta Expression Language 3.0
  • Jakarta Server Pages 2.3
  • Jakarta Standard Tag Library 1.2
  • Jakarta Concurrency 1.1
  • Jakarta Annotations 1.3
  • Jakarta XML Binding 2.3
  • Jakarta Debugging Support for Other Languages 1.0
  • Jakarta Transactions 1.3
  • Jakarta Connectors 1.7
jaxrs-server

このレイヤーは、以下の JBoss EAP サブシステムを使用して datasources-web-server レイヤーを強化します。

  • jaxrs
  • weld
  • jpa

このレイヤーは、コンテナーに Infinispan ベースのセカンドレベルのエンティティーキャッシングをローカルに追加します。

以下の MicroProfile 機能は、このレイヤーに含まれています。

  • MicroProfile REST クライアント

以下の Jakarta EE 仕様は、datasources-web-server レイヤーでサポートされるものに加え、このレイヤーでサポートされています。

  • Jakarta Contexts and Dependency Injection 2.0
  • Jakarta Bean Validation 2.0
  • Jakarta Interceptors 1.2
  • Jakarta RESTful Web Services 2.1
  • Jakarta Persistence 2.2
cloud-server

このレイヤーは、以下の JBoss EAP サブシステムを使用して jaxrs-server レイヤーを強化します。

  • resource-adapters
  • messaging-activemq (組み込みメッセージではなく、リモートブラオーカーメッセージング)

このレイヤーは、以下の observability 機能も jaxrs-server レイヤーに追加します。

  • MicroProfile Health
  • MicroProfile Config

以下の Jakarta EE 仕様は、jaxrs-server レイヤーでサポートされるものに加え、このレイヤーでサポートされています。

  • Jakarta Security 1.0
cloud-default-mp-config

このレイヤーは、standalone-microprofile-ha.xml ファイルに基づき、スタンドアロン設定でサーバーをプロビジョニングします。cloud-default-mp-layerorg.jboss.eap.xp:eap-xp-cloud-galleon-pack によって提供され、JBoss EAP XP S2I ビルドではサポートされますが、ブート可能な JAR ではサポートされません。JBoss EAP XP に含まれるサーバー設定ファイルの詳細は、スタンドアロンサーバー設定ファイル を参照してください。

このワークフローでは、例として microprofile-config クイックスタートを使用します。クイックスタートでは、独自のプロジェクトの参照として使用できる小規模の、特定の作業例を示します。詳細は、JBoss EAP XP 5.0.0 に同梱される microprofile-config クイックスタートを参照してください。

ee-core-profile-server

ee-core-profile-server レイヤーは、Jakarta EE 10 Core Profile を使用してサーバーをプロビジョニングします。Core Profile は、コア JBoss EAP サーバー機能と Jakarta EE API の両方を提供する小さく軽量なプロファイルをユーザーに提供します。ee-core-profile-server レイヤーは、クラウドネイティブアプリケーションやマイクロサービスなどの小規模なランタイムに最適です。

9.1.2. デコレーターレイヤー

デコレーターレイヤーは単独で使用されません。ベースレイヤーで 1 つ以上のデコレーターレイヤーを設定すると、追加機能を利用できます。

ejb-lite

このデコレーターレイヤーは、プロビジョニングされたサーバーに最小限の Jakarta Enterprise Bean 実装を追加します。このレイヤーには、以下のサポートは含まれません。

  • IIOP の統合
  • MDB インスタンスプール
  • リモートコネクターリソース

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

Jakarta Enterprise Beans

このデコレーターレイヤーは、ejb-lite レイヤーを拡張します。このレイヤーは、ejb-lite レイヤーに含まれるベース機能に加えて、プロビジョニングされたサーバーに以下のサポートを追加します。

  • MDB インスタンスプール
  • リモートコネクターリソース

メッセージ駆動 Bean (MDB) または Jakarta Enterprise Beans リモーティング機能の両方を使用する場合は、このレイヤーを使用します。これらの機能が必要ない場合は、ejb-lite レイヤーを使用します。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

ejb-local-cache

このデコレーターレイヤーは、Jakarta Enterprise Beans のローカルキャッシュサポートをプロビジョニングされたサーバーに追加します。

依存関係: ejb-lite レイヤーまたは ejb レイヤーを含む場合に限り、このレイヤーを含めることができます。

注記

このレイヤーは ejb-dist-cache レイヤーと互換性がありません。ejb-dist-cache レイヤーが含まれている場合は、ejb-local-cache レイヤーを含めることができません。両方のレイヤーが含まれる場合、生成されるビルドには予期しない Jakarta Enterprise Beans 設定が含まれる可能性があります。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

ejb-dist-cache

このデコレーターレイヤーは、Jakarta Enterprise Beans の分散キャッシングサポートをプロビジョニングされたサーバーに追加します。

依存関係: ejb-lite レイヤーまたは ejb レイヤーを含む場合に限り、このレイヤーを含めることができます。

注記

このレイヤーは ejb-local-cache レイヤーと互換性がありません。ejb-dist-cache レイヤーが含まれている場合は、ejb-local-cache レイヤーを含めることができません。両方のレイヤーを含めると、ビルドが予期しない設定になる可能性があります。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

jdr

このデコレーターレイヤーは、Red Hat からサポートを要求する際に診断データを収集するために JBoss Diagnostic Reporting (jdr) サブシステムを追加します。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

Jakarta Persistence

このデコレーターレイヤーは、単一ノードサーバーの永続性機能を追加します。分散キャッシングは、サーバーがクラスターを形成できる場合にのみ機能することに注意してください。

レイヤーは Hibernate ライブラリーをプロビジョニングされたサーバーに追加し、以下のサポートを受けることができます。

  • jpa サブシステムの設定
  • infinispan サブシステムの設定
  • ローカルの Hibernate キャッシュコンテナー
注記

このレイヤーは jpa-distributed で配布されるレイヤーと互換性がありません。jpa レイヤーを含める場合は、jpa-distributed レイヤーを含めることはできません。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

jpa-distributed

このデコレーターレイヤーは、クラスターで稼働しているサーバーに永続性を追加します。レイヤーは Hibernate ライブラリーをプロビジョニングされたサーバーに追加し、以下のサポートを受けることができます。

  • jpa サブシステムの設定
  • infinispan サブシステムの設定
  • ローカルの Hibernate キャッシュコンテナー
  • インバリデーションおよびレプリケーション Hibernate キャッシュコンテナー
  • jgroups サブシステムの設定
注記

このレイヤーは jpa レイヤーと互換性がありません。jpa レイヤーを含める場合は、jpa-distributed レイヤーを含めることはできません。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

Jakarta Server Faces

このデコレーターレイヤーは、プロビジョニングしたサーバーに jsf サブシステムを追加します。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

microprofile-platform

このデコレーターレイヤーは、以下の MicroProfile 機能を、プロビジョニングされたサーバーに追加します。

  • MicroProfile Config
  • MicroProfile Fault Tolerance
  • MicroProfile Health
  • MicroProfile JWT
  • MicroProfile OpenAPI
注記

このレイヤーには、observability レイヤーにも含まれる MicroProfile 機能が含まれます。このレイヤーを含める場合は、observability レイヤーを含める必要はありません。

observability

このデコレーターレイヤーは、プロビジョニングしたサーバーに以下の observability 機能を追加します。

  • MicroProfile Health
  • MicroProfile Config
注記

このレイヤーは、cloud-server レイヤーに組み込まれています。このレイヤーは cloud-server レイヤーに追加する必要はありません。

remote-activemq

このデコレーターレイヤーは、リモート ActiveMQ ブローカーと通信し、メッセージングサポートを統合する機能を追加します。

プールされた接続ファクトリー設定は、guestuser および password 属性の値として指定します。CLI スクリプトを使用して、起動時にこれらの値を変更できます。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

sso

このデコレーターレイヤーは、プロビジョニングしたサーバーに Red Hat Single Sign-On 統合を追加します。

このレイヤーは、S2I を使用してサーバーをプロビジョニングする場合にのみ使用してください。

web-console

このデコレーターレイヤーは、プロビジョニングしたサーバーに管理コンソールを追加します。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

web-clustering

このデコレーターレイヤーは、クラスタリング環境に適したデータセッション処理に、非ローカルの Infinispan ベースのコンテナー Web キャッシュを設定することにより、分散可能な Web アプリケーションをサポートします。

web-passivation

このデコレーターレイヤーは、単一ノード環境に適したデータセッション処理に、ローカルの Infinispan ベースのコンテナー Web キャッシュを設定することにより、分散可能な Web アプリケーションをサポートします。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

webservices

このレイヤーは Jakarta Web サービスデプロイメントをサポートするプロビジョニングされたサーバーに Web サービス機能を追加します。

このレイヤーは、起動可能な JAR をビルドする場合のみサポートされます。このレイヤーは、S2I を使用する場合にはサポートされません。

第10章 JBoss Tools を使用して JBoss EAP の MicroProfile アプリケーション開発を有効にする

JBoss Tools を使用して開発するアプリケーションに MicroProfile 機能を組み込む場合は、JBoss Tools で JBoss EAP の MicroProfile サポートを有効にする必要があります。

JBoss EAP 拡張パックは MicroProfile のサポートを提供します。

JBoss EAP 拡張パックは JBoss EAP 7.2 以前ではサポートされません。

JBoss EAP 拡張パックの各バージョンは、JBoss EAP の特定のパッチをサポートします。詳細は、JBoss EAP 拡張パックサポートおよびライフサイクルポリシーページを参照してください。

重要

JBoss EAP XP Quickstarts for Openshift はテクノロジープレビューとしてのみ提供されます。テクノロジープレビュー機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

10.1. MicroProfile 機能を使用するための JBoss Tools の設定

JBoss EAP で MicroProfile サポートを有効にするには、JBoss EAP XP の新しいランタイムサーバーを登録し、新しい JBoss EAP 8.0 サーバーを作成します。

MicroProfile 機能をサポートすることを認識に役立つ適切な名前を付けます。

このサーバーは、以前にインストールされたランタイムを参照し、standalone-microprofile.xml 設定ファイルを使用する新たに作成された JBoss EAP XP ランタイムを使用します。

注記

JBoss Tools で Target runtime8.0 以降のランタイムバージョンに設定した場合、プロジェクトは Jakarta EE 8 仕様と互換性があります。

手順

  1. New Server ダイアログボックスで新しいサーバーを設定します。

    1. Select server type リストで Red Hat JBoss Enterprise Application Platform 8.0 を選択します。
    2. Server's host name フィールドに localhost を入力します。
    3. Server name フィールドに JBoss EAP 8.0 XP を入力します。
    4. Next をクリックします。
  2. 新しいサーバーの設定

    1. Home directory フィールドに、デフォルト設定を使用しない場合は、新しいディレクトリーを指定します (例: home/myname/dev/microprofile/runtimes/jboss-eap-7.4)。
    2. Execution EnvironmentJavaSE-1.8 に設定されていることを確認します。
    3. 任意: Server base directoryConfiguration file フィールドの値を変更します。
    4. Finish をクリックします。

結果

これで、MicroProfile 機能を使用したアプリケーションの開発を開始することや、JBoss EAP の MicroProfile クイックスタートの使用できるようになりました。

10.2. JBoss Tools の MicroProfile クイックスタートの使用

MicroProfile クイックスタートを有効にすると、簡単な例はインストールされたサーバーで実行およびテストできるようになります。

これらの例は、以下の MicroProfile 機能を示しています。

  • MicroProfile Config
  • MicroProfile Fault Tolerance
  • MicroProfile Health
  • MicroProfile JWT
  • MicroProfile OpenAPI
  • MicroProfile REST クライアント

手順

  1. Quickstart Parent Artifact から pom.xml ファイルをインポートします。
  2. 環境変数を必要とするクイックスタートを使用している場合は、サーバーの Overview ダイアログボックスの起動設定でそれらの変数を設定します。

    たとえば、opentelemetry-tracing クイックスタートでは次の環境変数が使用されます。

    • OTEL_COLLECTOR_HOST

About JBoss Enterprise Application Platform expansion pack

Red Hat JBoss Enterprise Application Platform expansion pack サポートとライフサイクルポリシー

第11章 起動可能な JAR

JBoss EAP JAR Maven プラグインを使用して、マイクロサービスアプリケーションを起動可能な JAR としてビルドおよびパッケージ化できます。その後、JBoss EAP ベアメタルプラットフォームまたは JBoss EAP OpenShift プラットフォームでアプリケーションを実行できます。

11.1. 起動可能な JAR について

JBoss EAP JAR Maven プラグインを使用して、マイクロサービスアプリケーションを起動可能な JAR としてビルドおよびパッケージ化できます。

起動可能な JAR には、サーバー、パッケージ化されたアプリケーション、およびサーバー起動に必要なランタイムが含まれます。

JBoss JAR Maven プラグインは Galleon トリム機能を使用して、サーバーのサイズおよびメモリーフットプリントを削減します。そのため、必要な機能を提供する Galleon レイヤーのみを含め、要件に応じてサーバーを設定できます。

JBoss EAP JAR Maven プラグインは、サーバー設定をカスタマイズするための JBoss EAP CLI スクリプトファイルの実行をサポートします。CLI スクリプトには、サーバーを設定するための CLI コマンドのリストが含まれます。

起動可能な JAR は、以下の方法で標準の JBoss EAP サーバーと似ています。

  • JBoss EAP の共通の管理 CLI コマンドをサポートします。
  • JBoss EAP 管理コンソールを使用して管理できます。

起動可能な JAR でサーバーをパッケージ化する場合は、以下の制限が適用されます。

  • サーバー再起動を必要とする CLI 管理操作はサポートされていません。
  • サーバーは、サーバー管理に関連するサービスを開始するモードである admin-only モードで再起動できません。
  • サーバーをシャットダウンすると、サーバーに設定した更新が失われます。

さらに、起動可能な hollow JAR をプロビジョニングできます。この JAR にはサーバーのみが含まれるため、サーバーを変更して異なるアプリケーションを実行することができます。

11.2. JBoss EAP JAR Maven プラグイン

JBoss EAP JAR Maven プラグインを使用してアプリケーションを起動可能な JAR としてビルドできます。

9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインがあることを確認します。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。

Maven プロジェクトで、src ディレクトリーにはアプリケーションのビルドに必要なすべてのソースファイルが含まれています。JBoss EAP JAR Maven プラグインが起動可能な JAR をビルドすると、生成された JAR は target/<application>-bootable.jar に置かれます。

JBoss EAP JAR Maven プラグインによって以下の機能も提供されます。

  • JBoss EAP チャネルを使用して JBoss EAP XP サーバーをプロビジョニングできます。
  • CLI スクリプトコマンドをサーバーに適用します。
  • サーバー設定ファイルをカスタマイズするには、org.jboss.eap.xp:wildfly-galleon-pack Galleon 機能パックと、そのレイヤーの一部を使用します。
  • キーストアファイルなど、パッケージ化可能な JAR に追加ファイルの追加をサポートします。
  • 起動可能な hollow JAR を作成する機能が含まれています。つまり、アプリケーションを含まない起動可能な JAR です。

JBoss EAP JAR Maven プラグインを使用して起動可能な JAR を作成した後に、以下のコマンドを実行するとアプリケーションを起動できます。target/myapp-bootable.jar を起動可能な JAR へのパスに置き換えます。以下に例を示します。

$ java -jar target/myapp-bootable.jar
Copy to Clipboard Toggle word wrap
注記

サポートされる起動可能な JAR 起動コマンドのリストを取得するには、起動コマンドの最後に --help を追加します。例: java -jar target/myapp-bootable.jar --help

11.3. 起動可能な JAR 引数

以下の表で引数を確認し、起動可能な JAR で使用するサ対応引数について確認します。

Expand
表11.1 対応の起動可能な JAR 実行引数
引数説明

--help

指定のコマンドのヘルプメッセージを表示し、終了します。

--cli-script=<path>

起動可能な JAR の起動時に実行される JBoss CLI スクリプトへのパスを指定します。指定されたパスが相対パスである場合、パスは、起動可能な JAR の起動に使用される Java VM インスタンスの作業ディレクトリーに対して解決されます。

--deployment=<path>

起動可能な JAR に固有の引数。サーバーにデプロイするアプリケーションが含まれる WAR、JAR、EAR ファイル、またはデプロイメント形式のディレクトリーへのパスを指定します。

--display-galleon-config

生成された Galleon 設定ファイルの内容を出力します。

--install-dir=<path>

デフォルトでは、JVM 設定は、起動可能な JAR の起動後に TEMP ディレクトリーを作成するために使用されます。--install-dir 引数を使用するとサーバーをインストールするディレクトリーを指定できます。

-secmgr

セキュリティーマネージャーがインストールされた状態でサーバーを実行します。

-b<interface>=<value>

システムプロパティー jboss.bind.address.<interface> を指定の値に設定します。例: bmanagement=IP_ADDRESS

-b=<value>

パブリックインターフェイスのバインドアドレスを設定するために使用される jboss.bind.address システムプロパティーを設定します。値の指定がない場合はデフォルトで 127.0.0.1 が指定されます。

-D<name>[=<value>]

サーバーランタイムにサーバーによって設定されるシステムプロパティーを指定します。起動可能な JAR JVM はこれらのシステムプロパティーを設定しません。

--properties=<url>

指定の URL からシステムプロパティーをロードします。

-S<name>[=value]

セキュリティープロパティーを設定します。

-u=<value>

設定ファイルの socket-binding 要素のマルチキャストアドレスを設定するために使用される jboss.default.multicast.address システムプロパティーを設定します。値の指定がない場合はデフォルトで 230.0.0.4 が指定されます。

--version

アプリケーションサーバーのバージョンを表示し、終了します。

11.4. 起動可能な JAR サーバーの Galleon レイヤーの指定

Galleon レイヤーを指定して、サーバーのカスタム設定をビルドできます。さらに、サーバーから除外する Galleon レイヤーを指定することもできます。

JBoss EAP XP 5.0 以降では、サーバーアーティファクトを取得するために、JBoss EAP 8.0 および JBoss EAP XP 5.0 チャネルを使用して JBoss EAP JAR Maven プラグインを設定する必要があります。JBoss EAP チャネルの詳細は、JBoss EAP インストールチャネルの管理 を参照してください。

最新の JBoss EAP XP 5.0 サーバーをプロビジョニングするための JBoss EAP および JBoss EAP XP チャネルを指定するには、次の例に従います。

注記

<feature-pack-location> 要素を使用して、機能パックの場所を指定します。以下の例では、Maven プラグイン設定ファイルで <feature-pack-location> 要素内に org.jboss.eap.xp:wildfly-Galleon-pack を指定します。

<configuration>
	<channels>
		<channel>
			<manifest>
				<groupId>org.jboss.eap.channels</groupId>
				<artifactId>eap-8.0</artifactId>
			</manifest>
		</channel>
		<channel>
			<manifest>
				<groupId>org.jboss.eap.channels</groupId>
				<artifactId>eap-xp-5.0</artifactId>
			</manifest>
		</channel>
	</channels>
	<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
</configuration>
Copy to Clipboard Toggle word wrap

複数の機能パックを参照する必要がある場合は、それらを <feature-packs> 要素に一覧表示します。次の例では、JBoss EAP データソース機能パックを <feature-packs> 要素に追加しています。

<configuration>
	<feature-packs>
		<feature-pack>
			<location>org.jboss.eap.xp:wildfly-galleon-pack</location>
		</feature-pack>
		<feature-pack>
			<location>org.jboss.eap:eap-datasources-galleon-pack</location>
		</feature-pack>
	</feature-packs>
</configuration>
Copy to Clipboard Toggle word wrap

複数の機能パックから Galleon レイヤーを組み合わせて、起動可能な JAR サーバーを設定し、必要な機能を提供する対応の Galleon レイヤーのみを含めることができます。

注記

ベアメタルプラットフォームで、設定ファイルで Galleon レイヤーを指定しない場合、プロビジョニングしたサーバーにはデフォルトの standalone-microprofile.xml 設定と同じ設定が含まれます。

OpenShift プラットフォームでは、プラグイン設定に <cloud/> 設定要素を追加した後に、設定ファイルで Galleon レイヤーを指定しない場合、プロビジョニングされたサーバーにはクラウド環境用に調整され、デフォルトの standalone-microprofile-ha.xml と似ている設定が含まれます。

前提条件

  • Maven がインストールされている。
  • 9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。
注記

この手順の例では、以下のプロパティーを指定します。

  • Maven プラグインバージョンの場合は、${bootable.jar.maven.plugin.version} です。

これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。

<properties>
    <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
Copy to Clipboard Toggle word wrap

手順

  1. アプリケーションの実行に必要な機能を提供する、サポートされる JBoss EAP Galleon レイヤーを特定します。
  2. Maven プロジェクトの pom.xml ファイルの <plugin> 要素で JBoss EAP feature-pack の場所を参照します。以下の例は、jaxrs-server ベースレイヤーおよび jpa-distributed レイヤーを含む単一の feature-pack を組み込んでいます。jaxrs-server ベースレイヤーは、サーバーの追加サポートを提供します。

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>jaxrs-server</layer>
    				<layer>jpa-distributed</layer>
    			</layers>
    			<excluded-layers>
    				<layer>jpa</layer>
    			</excluded-layers>
                     ...
    		</configuration>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap

    この例では、プロジェクトからの jpa レイヤーの除外も示しています。

    注記

    jpa-distributed レイヤーをプロジェクトに含める場合は、jaxrs-server レイヤーから jpa レイヤーを除外する必要があります。jpa レイヤーはローカルの infinispan hibernate キャッシュを設定し、jpa-distributed レイヤーはリモート infinispan hibernate キャッシュを設定します。

11.5. JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の使用

JBoss EAP ベアメタルプラットフォームで、アプリケーションを起動可能な JAR としてパッケージ化できます。

起動可能な JAR には、サーバー、パッケージ化されたアプリケーション、およびサーバー起動に必要なランタイムが含まれます。

この手順では、JBoss EAP JAR Maven プラグインを使用して MicroProfile Config マイクロサービスを起動可能な JAR としてパッケージ化する方法を説明します。MicroProfile Config Quickstart を参照してください。

起動可能な JAR のパッケージング時に CLI スクリプトを使用してサーバーを設定できます。

重要

起動可能な JAR 内にパッケージ化する必要がある Web アプリケーションのビルドでは、pom.xml ファイルの <packaging> 要素に war を指定する必要があります。以下に例を示します。

<packaging>war</packaging>
Copy to Clipboard Toggle word wrap

この値は、ビルドアプリケーションを、デフォルトの JAR ファイルとしてではなく、WAR ファイルとしてパッケージ化するのに必要です。

起動可能な hollow JAR をビルドするためだけに Maven プロジェクトで使用される Maven プロジェクトで、packaging の値を pom に設定します。以下に例を示します。

<packaging>pom</packaging>
Copy to Clipboard Toggle word wrap

Maven プロジェクトの hollow JAR をビルドする場合は、pom パッケージングの使用に限定されません。war などのパッケージ化の種類について <hollow-jar> 要素に true を指定すると作成できます。JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の作成 を参照してください。

前提条件

  • 9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。
  • Maven プロジェクトを作成し、MicroProfile アプリケーションを作成するための依存関係を追加しました。MicroProfile Config の開発 を参照してください。
注記

この手順の例では、以下のプロパティーを指定します。

  • Maven プラグインバージョンの場合は、${bootable.jar.maven.plugin.version} です。

これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。

<properties>
    <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
Copy to Clipboard Toggle word wrap

手順

  1. 以下の内容を pom.xml ファイルの <build> 要素に追加します。以下に例を示します。

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>jaxrs-server</layer>
    				<layer>microprofile-platform</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    注記

    pom.xml ファイルで Galleon レイヤーを指定しない場合、起動可能な JAR サーバーには standalone-microprofile.xml 設定と同じ設定が含まれます。

  2. アプリケーションを起動可能な JAR としてパッケージ化します。

    $ mvn package
    Copy to Clipboard Toggle word wrap
  3. アプリケーションを起動します。

    $ NAME="foo" java -jar target/microprofile-config-bootable.jar
    Copy to Clipboard Toggle word wrap
    注記

    この例では、環境変数に NAME を使用しますが、デフォルト値の jim を使用することができます。

    注記

    サポートされる起動可能な JAR 引数のリストを表示するには、--helpjava -jar target/microprofile-config-bootable.jar コマンドの最後に追加します。

  4. Web ブラウザーで以下の URL を指定して MicroProfile Config アプリケーションにアクセスします。

    http://localhost:8080/config/json
    Copy to Clipboard Toggle word wrap
  5. 検証: ターミナルで以下のコマンドを実行し、アプリケーションが適切に動作します。

    curl http://localhost:8080/config/json
    Copy to Clipboard Toggle word wrap

    以下が想定される出力です。

    {"result":"Hello foo"}
    Copy to Clipboard Toggle word wrap

11.6. JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の作成

JBoss EAP ベアメタルプラットフォームで、アプリケーションを起動可能な hollow JAR としてパッケージ化できます。

起動可能な hollow JAR には JBoss EAP サーバーのみが含まれます。起動可能な hollow JAR は JBoss EAP JAR Maven プラグインによってパッケージ化されます。アプリケーションはサーバーランタイム時に提供されます。起動可能な JAR は、異なるアプリケーションのサーバー設定を再利用する必要がある場合に便利です。

前提条件

手順

  1. 起動可能な hollow JAR をビルドするには、プロジェクトの pom.xml ファイルで <hollow-jar> プラグイン設定要素を true に設定する必要があります。以下に例を示します。
<plugins>
	<plugin>
            ...
		<configuration>
			<!-- This example configuration does not show a complete plug-in configuration -->
                 ...
			<groupId>org.wildfly.plugins</groupId>
			<artifactId>wildfly-jar-maven-plugin</artifactId>
			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
			<hollow-jar>true</hollow-jar>
		</configuration>
	</plugin>
</plugins>
Copy to Clipboard Toggle word wrap
注記

<hollow-jar> 要素で true を指定すると、JBoss EAP JAR Maven プラグインにアプリケーションが含まれません。

  1. 起動可能な hollow JAR をビルドします。

    $ mvn clean package
    Copy to Clipboard Toggle word wrap
  2. 起動可能な hollow JAR を実行します。

    $ java -jar target/microprofile-config-bootable.jar --deployment=target/microprofile-config.war
    Copy to Clipboard Toggle word wrap
    重要

    サーバーにデプロイする WAR ファイルへのパスを指定するには、以下の引数を使用します。<PATH_NAME> は、デプロイメントへのパスになります。

    --deployment=<PATH_NAME>
    Copy to Clipboard Toggle word wrap
  3. アプリケーションにアクセスします。

    $ curl http://localhost:8080/microprofile-config/config/json
    Copy to Clipboard Toggle word wrap
    注記

    root ディレクトリーに Web アプリケーションを登録するには、アプリケーションに ROOT.war という名前を付けます。

11.7. ビルド時に実行される CLI スクリプト

CLI スクリプトを作成して、起動可能な JAR のパッケージング中にサーバーを設定できます。

CLI スクリプトは、追加のサーバー設定を適用するために使用できる一連の CLI コマンドが含まれるテキストファイルです。たとえば、スクリプトを作成して新しいロガーを logging サブシステムに追加できます。

CLI スクリプトでより複雑な操作を指定することもできます。たとえば、セキュリティー管理操作を単一のコマンドにグループ化して、管理 HTTP エンドポイントの HTTP 認証を有効にできます。

注記

アプリケーションを起動可能な JAR としてパッケージ化する前に、プラグイン設定の <cli-session> 要素に CLI スクリプトを定義する必要があります。これにより、起動可能な JAR をパッケージ化した後にサーバー設定が維持されるようになります。

事前定義された Galleon レイヤーを組み合わせて、アプリケーションをデプロイするサーバーを設定できますが、制限はあります。たとえば、起動可能な JAR のパッケージ化時に Galleon レイヤーを使用して HTTPS undertow リスナーを有効にすることはできません。代わりに、CLI スクリプトを使用する必要があります。

CLI スクリプトは、pom.xml ファイルの <cli-session> 要素に定義する必要があります。以下の表は、CLI セッション属性のタイプを示しています。

Expand
表11.2 CLI スクリプトの属性
引数説明

script-files

スクリプトファイルへのパスのリスト。

properties-file

プロパティーファイルへのパスを指定する任意の属性。このファイルは、${my.prop} 構文を使用してスクリプトが参照できる Java プロパティーをリスト表示します。以下の例では、public inet-addressall.addresses の値に設定します。/interface=public:write-attribute(name=inet-address,value=${all.addresses})

resolve-expressions

ブール値が含まれる任意の属性です。操作リクエストをサーバーに送信する前にシステムプロパティーまたは式が解決されているかどうかを示します。デフォルト値は true です。

注記
  • CLI スクリプトは、pom.xml ファイルの <cli-session> 要素で定義された順序で起動します。
  • JBoss EAP JAR Maven プラグインは、各 CLI セッションに対して埋め込みサーバーを起動します。そのため、CLI スクリプトは埋め込みサーバーを起動したり、停止したりする必要はありません。

11.8. 実行時に CLI スクリプトを実行する

実行時にサーバー設定に変更を適用できます。これにより、実行コンテキストに関してサーバーを柔軟に調整できます。ただし、サーバーに変更を適用するための推奨される方法は、ビルド時です。

手順

  • 起動可能な JAR と --cli-script 引数を起動します。

    以下に例を示します。

    java -jar myapp-bootable.jar --cli-scipt=my-scli-scipt.cli
    Copy to Clipboard Toggle word wrap
注記
  • CLI スクリプトはテキストファイル (UTF-8) である必要があります。ファイル拡張子が存在する場合は意味がありませんが、.cli 拡張子を使用することを推奨します。
  • サーバーの再起動が必要な操作は、起動可能な JAR インスタンスを終了します。
  • connectreloadshutdown などの CLI コマンド、および組み込みサーバーに関連するコマンドは機能しません。
  • admin モードでは実行できない jdbc-driver-info などの CLI コマンドはサポートされていません。
重要

CLI スクリプトを実行せずにサーバーを再起動すると、新しいサーバーインスタンスには以前のサーバーインスタンスからの変更が含まれなくなります。

11.9. JBoss EAP OpenShift プラットフォームでの起動可能な JAR の使用

11.9.1. oc コマンドを使用したバイナリービルドの実行

アプリケーションを起動可能な JAR としてパッケージ化した後、JBoss EAP OpenShift プラットフォームでアプリケーションを実行できます。

重要

OpenShift では、起動可能な JAR で EAP Operator の自動化トランザクションリカバリー機能を使用することはできません。

前提条件

  • MicroProfile Config 開発用の Maven プロジェクトを作成した。例: MicroProfile Config クイックスタート を参照してください。
  • 9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。
注記

この手順の例では、以下のプロパティーを指定します。

  • Maven プラグインバージョンの場合は、${bootable.jar.maven.plugin.version} です。

これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。

<properties>
    <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
Copy to Clipboard Toggle word wrap

手順

  1. 以下の内容を pom.xml ファイルの <build> 要素に追加します。以下に例を示します。

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>jaxrs-server</layer>
    				<layer>microprofile-platform</layer>
    			</layers>
    			<cloud/>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    注記

    <cloud/> 要素をプラグイン設定の <configuration> 要素に含める必要があります。そのため、JBoss EAP Maven JAR プラグインは OpenShift プラットフォームを選択できます。

  2. アプリケーションをパッケージ化します。

    $ mvn package
    Copy to Clipboard Toggle word wrap
  3. oc login コマンドを使用して、OpenShift インスタンスにログインします。
  4. OpenShift で新しいプロジェクトを作成します。以下に例を示します。

    $ oc new-project bootable-jar-project
    Copy to Clipboard Toggle word wrap
  5. 以下の oc コマンドを入力してアプリケーションイメージを作成します。

    $ mkdir target/openshift && cp target/microprofile-config-bootable.jar target/openshift  
    1
    
    
    $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm 
    2
    
    
    $ oc new-build --strategy source --binary --image-stream openjdk-17 --name microprofile-config-app 
    3
    
    
    $ oc start-build microprofile-config-app --from-dir target/openshift 
    4
    Copy to Clipboard Toggle word wrap
    1
    ターゲットディレクトリーに openshift サブディレクトリーを作成します。パッケージ化されたアプリケーションが、作成されたサブディレクトリーにコピーされます。
    2
    最新の OpenJDK 17 イメージストリームタグおよびイメージ情報を OpenShift プロジェクトにインポートします。
    3
    microprofile-config-app ディレクトリーおよび OpenJDK 17 イメージストリームに基づいてビルド設定を作成します。
    4
    target/openshift サブディレクトリーをバイナリー入力として使用し、アプリケーションをビルドします。
    注記

    OpenShift は CLI スクリプトコマンドのセットを起動可能な JAR 設定ファイルに適用し、クラウド環境に合わせて調整します。このスクリプトにアクセスするには、Maven プロジェクト /target directorybootable-jar-build-artifacts/generated-cli-script.txt ファイルを開きます。

  6. 検証:

    利用可能な OpenShift Pod のリストを表示し、以下のコマンドを実行して Pod のビルドステータスを確認します。

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    ビルドされたアプリケーションイメージを確認します。

    $ oc get is microprofile-config-app
    Copy to Clipboard Toggle word wrap

    出力には、名前、イメージリポジトリー、タグなどのビルドされたアプリケーションイメージの詳細が表示されます。この手順の例では、イメージストリーム名とタグの出力には microprofile-config-app:latest が表示されます。

  7. アプリケーションのデプロイ:

    $ oc new-app microprofile-config-app
    
    $ oc expose svc/microprofile-config-app
    Copy to Clipboard Toggle word wrap
    重要

    起動可能な JAR にシステムプロパティーを指定するには、JAVA_OPTS_APPEND 環境変数を使用する必要があります。以下の例は、JAVA_OPTS_APPEND 環境変数の使用方法を示しています。

    $ oc new-app <_IMAGESTREAM_> -e JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
    Copy to Clipboard Toggle word wrap

    新しいアプリケーションが作成され、起動します。アプリケーション設定は新しいサービスとして公開されます。

  8. 検証: ターミナルで以下のコマンドを実行し、アプリケーションが適切に動作するかどうかをテストします。

    $ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json
    Copy to Clipboard Toggle word wrap

    想定される出力:

    {"result":"Hello jim"}
    Copy to Clipboard Toggle word wrap

11.10. OpenShift の起動可能な JAR の設定

起動可能な JAR を使用する前に、JVM を設定してスタンドアロンサーバーが JBoss EAP for OpenShift で正しく動作することを確認できます。

JAVA_OPTS_APPEND 環境変数を使用して JVM を設定します。JAVA_ARGS コマンドを使用して、起動可能な JAR に引数を提供します。

環境変数を使用してプロパティーの値を設定できます。たとえば、JAVA_OPTS_APPEND 環境変数を使用して、-Dwildfly.statistics-enabled プロパティーを true に設定できます。

JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
Copy to Clipboard Toggle word wrap

サーバーの統計が有効になっているようになりました。

注記

起動可能な JAR に引数を提供する必要がある場合は、JAVA_ARGS 環境変数を使用します。

JBoss EAP for OpenShift は JDK 17 イメージを提供します。起動可能な JAR に関連付けられたアプリケーションを実行するには、まず最新の OpenJDK 17 イメージストリームタグおよびイメージ情報を OpenShift プロジェクトにインポートする必要があります。環境変数を使用して、インポートされたイメージで JVM を設定できます。

JBoss EAP for OpenShift S2I イメージに使用される JVM の設定に同じ設定オプションを適用できますが、以下の違いがあります。

  • オプション: -Xlog 機能は利用できませんが、-Xlog:gc を有効にすることでガベッジコレクションのロギングを設定できます。例: JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time"
  • 初期メタスペースのサイズを増やすには、GC_METASPACE_SIZE 環境変数を設定します。最適なメタデータのキャパシティパフォーマンスを得るためには、値を 96 に設定します。
  • ランダムなファイルの生成を改善するには、JAVA_OPTS_APPEND 環境変数を使用して、java.security.egd プロパティーを -Djava.security.egd=file:/dev/urandom に設定します。

この設定により、インポートされた OpenJDK 17 イメージで実行される場合に JVM のメモリー設定およびガベージコレクション機能が向上します。

11.11. OpenShift でのアプリケーションでの ConfigMap の使用

OpenShift では、デプロイメントコントローラー (dc) を使用して、アプリケーションの実行に使用される Pod に configmap をマウントできます。

ConfigMap は、機密ではないデータをキーと値のペアに保存するために使用される OpenShift リソースです。

microprofile-platform Galleon レイヤーを指定して microprofile-config-smallrye およびすべての拡張機能をサーバー設定に追加してから、CLI スクリプトを使用して新しい ConfigSource をサーバー設定に追加できます。CLI スクリプトは、Maven プロジェクトのルートディレクトリーにある /scripts ディレクトリーなど、アクセス可能なディレクトリーに保存できます。

MicroProfile Config 機能は、SmallRye Config を使用して JBoss EAP に実装され、microprofile-config-smallrye サブシステムによって提供されます。このサブシステムは microprofile-platform Galleon レイヤーに含まれています。

前提条件

  • Maven がインストールされている。
  • JBoss EAP Maven リポジトリーを設定している。
  • アプリケーションを起動可能な JAR としてパッケージ化し、JBoss EAP OpenShift プラットフォームでアプリケーションを実行できます。OpenShift プラットフォーム上でアプリケーションを起動可能な JAR として構築する方法は、JBoss EAP OpenShift プラットフォームでの起動可能な JAR の使用 を参照してください。

手順

  1. プロジェクトのルートディレクトリーに scripts という名前のディレクトリーを作成します。以下に例を示します。

    $ mkdir scripts
    Copy to Clipboard Toggle word wrap
  2. cli.properties ファイルを作成し、そのファイルを /scripts ディレクトリーに保存します。このファイルに config.path および config.ordinal システムプロパティーを定義します。以下に例を示します。

    config.path=/etc/config
    config.ordinal=200
    Copy to Clipboard Toggle word wrap
  3. mp-config.cli などの CLI スクリプトを作成し、これを /scripts ディレクトリーなどの起動可能な JAR のアクセス可能なディレクトリーに保存します。以下の例は、mp-config.cli スクリプトの内容を示しています。

    # config map
    
    /subsystem=microprofile-config-smallrye/config-source=os-map:add(dir={path=${config.path}}, ordinal=${config.ordinal})
    Copy to Clipboard Toggle word wrap

    mp-config.cli CLI スクリプトは、プロパティーファイルから序数とパスの値を取得する新しい ConfigSource を作成します。

  4. スクリプトを /scripts ディレクトリーに保存します。このディレクトリーは、プロジェクトのルートディレクトリーにあります。
  5. 既存のプラグイン <configuration> 要素に以下の設定抽出を追加します。

    <cli-sessions>
        <cli-session>
            <properties-file>
                scripts/cli.properties
            </properties-file>
            <script-files>
                <script>scripts/mp-config.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>
    Copy to Clipboard Toggle word wrap
  6. アプリケーションをパッケージ化します。

    $ mvn package
    Copy to Clipboard Toggle word wrap
  7. oc login コマンドを使用して、OpenShift インスタンスにログインします。
  8. オプション: target/openshift サブディレクトリーを作成していない場合は、以下のコマンドを実行してサブディレクトリーを作成する必要があります。

    $ mkdir target/openshift
    Copy to Clipboard Toggle word wrap
  9. パッケージ化したアプリケーションを、作成したサブディレクトリーにコピーします。

    $ cp target/microprofile-config-bootable.jar target/openshift
    Copy to Clipboard Toggle word wrap
  10. target/openshift サブディレクトリーをバイナリー入力として使用し、アプリケーションをビルドします。

    $ oc start-build microprofile-config-app --from-dir target/openshift
    Copy to Clipboard Toggle word wrap
    注記

    OpenShift は CLI スクリプトコマンドのセットを起動可能な JAR 設定ファイルに適用し、クラウド環境に合わせて調整します。このスクリプトにアクセスするには、Maven プロジェクト /target directorybootable-jar-build-artifacts/generated-cli-script.txt ファイルを開きます。

  11. ConfigMap を作成します。以下に例を示します。

    $ oc create configmap microprofile-config-map --from-literal=name="Name comes from Openshift ConfigMap"
    Copy to Clipboard Toggle word wrap
  12. dc を使用して、ConfigMap をアプリケーションにマウントします。以下に例を示します。

    $ oc set volume deployments/microprofile-config-app --add --name=config-volume \
    --mount-path=/etc/config \
    --type=configmap \
    --configmap-name=microprofile-config-map
    Copy to Clipboard Toggle word wrap

    oc set volume コマンドを実行すると、アプリケーションは新しい設定で再デプロイされます。

  13. 出力をテストします。

    $ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json
    Copy to Clipboard Toggle word wrap

    以下が想定される出力です。

    {"result":"Hello Name comes from Openshift ConfigMap"}
    Copy to Clipboard Toggle word wrap

11.12. 起動可能な JAR Maven プロジェクトの作成

以下の手順に従って、サンプル Maven プロジェクトを作成します。以下の手順を実行する前に、Maven プロジェクトを作成する必要があります。

  • 起動可能な JAR の JSON ロギングの有効化
  • 複数の起動可能な JAR インスタンスの Web セッションデータストレージの有効化
  • CLI スクリプトを使用した起動可能な JAR の HTTP 認証の有効化
  • Red Hat build of Keycloak による JBoss EAP ブート可能 JAR アプリケーションのセキュリティー保護

プロジェクトの pom.xml ファイルでは、起動可能な JAR のビルドに必要なプロジェクトアーティファクトを取得するように Maven を設定できます。

手順

  1. Maven プロジェクトを設定します。

    $ mvn archetype:generate \
    -DgroupId=GROUP_ID \
    -DartifactId=ARTIFACT_ID \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    Copy to Clipboard Toggle word wrap

    GROUP_ID はプロジェクトの groupId で、ARTIFACT_ID はプロジェクトの artifactId です。

  2. pom.xml ファイルで、リモートリポジトリーから JBoss EAP BOM ファイルを取得するように Maven を設定します。

    <repositories>
        <repository>
            <id>jboss</id>
            <url>https://maven.repository.redhat.com/ga</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
          <id>jboss</id>
            <url>https://maven.repository.redhat.com/ga</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
      </pluginRepository>
    </pluginRepositories>
    Copy to Clipboard Toggle word wrap
  3. jboss-eap-ee BOM の Jakarta EE アーティファクトのバージョンを自動的に管理するように Maven を設定するには、プロジェクトの pom.xml ファイルの <dependencyManagement> セクションに BOM を追加します。以下に例を示します。

    <dependencyManagement>
      <dependencies>
        <dependency>
            <groupId>org.jboss.bom</groupId>
            <artifactId>jboss-eap-ee</artifactId>
            <version>8.0.2.GA-redhat-00007</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    Copy to Clipboard Toggle word wrap
  4. 以下の例のように、BOM によって管理されるサーブレット API アーティファクトをプロジェクトの pom.xml ファイルの <dependency> セクションに追加します。

    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
    Copy to Clipboard Toggle word wrap

11.13. 起動可能な JAR の JSON ロギングの有効化

CLI スクリプトを使用してサーバーロギング設定を設定すると、起動可能な JAR の JSON ロギングを有効にできます。JSON ロギングを有効にすると、JSON フォーマッターを使用してログメッセージを JSON 形式で表示できます。

この手順の例では、ベアメタルプラットフォームおよび OpenShift プラットフォームで、起動可能な JAR の JSON ロギングを有効にする方法を説明します。

前提条件

  • 9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。
  • Maven プロジェクトを作成し、アプリケーションを作成するための依存関係を追加した。起動可能な JAR Maven プロジェクトの作成 を参照してください。

    重要

    Maven プロジェクトの Maven archetype で、プロジェクト固有の groupID および artifactID を指定する必要があります。以下に例を示します。

    $ mvn archetype:generate \
    -DgroupId=com.example.logging \
    -DartifactId=logging \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    cd logging
    Copy to Clipboard Toggle word wrap
    注記

    この手順の例では、以下のプロパティーを指定します。

    • Maven プラグインバージョンの場合は、${bootable.jar.maven.plugin.version} です。

    これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。

    <properties>
        <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap

手順

  1. BOM によって管理される JBoss Logging および Jakarta RESTful Web Services 依存関係を、プロジェクトの pom.xml ファイルの <dependencies> セクションに追加します。以下に例を示します。

    <dependencies>
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.ws.rs</groupId>
            <artifactId>jakarta.ws.rs-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    Copy to Clipboard Toggle word wrap
  2. 以下の内容を pom.xml ファイルの <build> 要素に追加します。以下に例を示します。

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-packs>
    				<feature-pack>
    					<location>org.jboss.eap.xp:wildfly-galleon-pack</location>
    				</feature-pack>
    			</feature-packs>
    			<layers>
    				<layer>jaxrs-server</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
  3. java ファイルを保存するディレクトリーを作成します。

    $ mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/
    Copy to Clipboard Toggle word wrap

    APPLICATION_ROOT は、アプリケーションの pom.xml 設定ファイルが含まれるディレクトリーです。

  4. 以下の内容で Java ファイル RestApplication.java を作成し、ファイルを APPLICATION_ROOT/src/main/java/com/example/logging/ ディレクトリーに保存します。

    package com.example.logging;
    import jakarta.ws.rs.ApplicationPath;
    import jakarta.ws.rs.core.Application;
    
    @ApplicationPath("/")
    public class RestApplication extends Application {
    }
    Copy to Clipboard Toggle word wrap
  5. 以下の内容で Java ファイル HelloWorldEndpoint.java を作成し、ファイルを APPLICATION_ROOT/src/main/java/com/example/logging/ ディレクトリーに保存します。

    package com.example.logging;
    
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.core.Response;
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Produces;
    
    import org.jboss.logging.Logger;
    @Path("/hello")
    public class HelloWorldEndpoint {
    
        private static Logger log = Logger.getLogger(HelloWorldEndpoint.class.getName());
        @GET
        @Produces("text/plain")
        public Response doGet() {
            log.debug("HelloWorldEndpoint.doGet called");
            return Response.ok("Hello from XP bootable jar!").build();
        }
    }
    Copy to Clipboard Toggle word wrap
  6. logging.cli などの CLI スクリプトを作成し、APPLICATION_ROOT/scripts ディレクトリーなどの起動可能な JAR のアクセス可能なディレクトリーに保存します。APPLICATION_ROOT は Maven プロジェクトのルートディレクトリーです。スクリプトには以下のコマンドが含まれている必要があります。

    /subsystem=logging/logger=com.example.logging:add(level=ALL)
    /subsystem=logging/json-formatter=json-formatter:add(exception-output-type=formatted, pretty-print=false, meta-data={version="1"}, key-overrides={timestamp="@timestamp"})
    /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=ALL)
    /subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json-formatter)
    Copy to Clipboard Toggle word wrap
  7. プラグイン <configuration> 要素に以下の設定抽出を追加します。

    <cli-sessions>
            <cli-session>
            <script-files>
                <script>scripts/logging.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>
    Copy to Clipboard Toggle word wrap

    この例は、アプリケーションの JSON ロギングを有効にするためにサーバーロギング設定ファイルを変更する logging.cli CLI スクリプトを示しています。

  8. アプリケーションを起動可能な JAR としてパッケージ化します。

    $ mvn package
    Copy to Clipboard Toggle word wrap
  9. オプション: JBoss EAP ベアメタルプラットフォームでアプリケーションを実行するには、JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の使用 にある手順に従いますが、以下の違いがあります。

    1. アプリケーションを起動します。

      mvn wildfly-jar:run
      Copy to Clipboard Toggle word wrap
    2. 検証: ブラウザーで http://127.0.0.1:8080/hello に URL を指定すると、アプリケーションにアクセスできます。

      予期される出力: アプリケーションコンソールで com.example.logging.HelloWorldEndpoint デバッグトレースを含む JSON 形式のログを表示できます。

  10. オプション: JBoss EAP OpenShift プラットフォームでアプリケーションを実行するには、以下の手順を実行します。

    1. <cloud/> 要素をプラグイン設定に追加します。以下に例を示します。

      <plugins>
         <plugin>
             ... <!-- You must evolve the existing configuration with the <cloud/> element  -->
             <configuration >
                 ...
                 <cloud/>
              </configuration>
          </plugin>
      </plugins>
      Copy to Clipboard Toggle word wrap
    2. アプリケーションをリビルドします。

      $ mvn clean package
      Copy to Clipboard Toggle word wrap
    3. oc login コマンドを使用して、OpenShift インスタンスにログインします。
    4. OpenShift で新しいプロジェクトを作成します。以下に例を示します。

      $ oc new-project bootable-jar-project
      Copy to Clipboard Toggle word wrap
    5. 以下の oc コマンドを入力してアプリケーションイメージを作成します。

      $ mkdir target/openshift && cp target/logging-bootable.jar target/openshift 
      1
      
      
      $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm
       
      2
      
      
      $ oc new-build --strategy source --binary --image-stream openjdk-17 --name logging 
      3
      
      
      $ oc start-build logging --from-dir target/openshift 
      4
      Copy to Clipboard Toggle word wrap
      1
      target/openshift サブディレクトリーを作成します。パッケージ化されたアプリケーションは openshift サブディレクトリーにコピーされます。
      2
      最新の OpenJDK 17 イメージストリームタグおよびイメージ情報を OpenShift プロジェクトにインポートします。
      3
      ロギングディレクトリーおよび OpenJDK 17 イメージストリームに基づき、ビルド設定を作成します。
      4
      target/openshift サブディレクトリーをバイナリー入力として使用し、アプリケーションをビルドします。
    6. アプリケーションのデプロイ:

      $ oc new-app logging
      
      $ oc expose svc/logging
      Copy to Clipboard Toggle word wrap
    7. ルートの URL を取得します。

      $ oc get route logging --template='{{ .spec.host }}'
      Copy to Clipboard Toggle word wrap
    8. 直前のコマンドから返された URL を使用して、Web ブラウザーでアプリケーションにアクセスします。以下に例を示します。

      http://ROUTE_NAME/hello
      Copy to Clipboard Toggle word wrap
    9. Verfication: 以下のコマンドを実行して、利用可能な OpenShift Pod のリストを表示し、Pod のビルドステータスを確認します。

      $ oc get pods
      Copy to Clipboard Toggle word wrap

      アプリケーションの実行中の Pod ログにアクセスします。APP_POD_NAME は、実行中の Pod ロギングアプリケーションの名前です。

      $ oc logs APP_POD_NAME
      Copy to Clipboard Toggle word wrap

      想定される結果: Pod ログは JSON 形式であり、com.example.logging.HelloWorldEndpoint デバッグトレースが含まれます。

11.14. 複数の起動可能な JAR インスタンスの Web セッションデータストレージの有効化

web クラスター化アプリケーションを起動可能な JAR としてビルドおよびパッケージ化できます。

前提条件

  • 9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。
  • Maven プロジェクトを作成し、web-clustering アプリケーションを作成するための依存関係を追加した。起動可能な JAR Maven プロジェクトの作成 を参照してください。

    重要

    Maven プロジェクトを設定する場合は、Maven archetype 設定で値を指定する必要があります。以下に例を示します。

    $ mvn archetype:generate \
    -DgroupId=com.example.webclustering \
    -DartifactId=web-clustering \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    cd web-clustering
    Copy to Clipboard Toggle word wrap
    注記

    この手順の例では、以下のプロパティーを指定します。

    • Maven プラグインバージョンの場合は、${bootable.jar.maven.plugin.version} です。

    これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。

    <properties>
        <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap

手順

  1. 以下の内容を pom.xml ファイルの <build> 要素に追加します。以下に例を示します。

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>datasources-web-server</layer>
    				<layer>web-clustering</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    注記

    この例では、web-clustering Galleon レイヤーを使用して Web セッション共有を有効にします。

  2. 以下の設定を含む src/main/webapp/WEB-INF ディレクトリーに web.xml ファイルを作成します。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app version="4.0"
             xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
        <distributable/>
    </web-app>
    Copy to Clipboard Toggle word wrap

    <distributable/> タグは、このサーブレットを複数のサーバーに分散できることを示します。

  3. java ファイルを保存するディレクトリーを作成します。

    $ mkdir -p APPLICATION_ROOT
    /src/main/java/com/example/webclustering/
    Copy to Clipboard Toggle word wrap

    APPLICATION_ROOT は、アプリケーションの pom.xml 設定ファイルが含まれるディレクトリーです。

  4. 以下の内容で Java ファイル MyServlet.java を作成し、ファイルを APPLICATION_ROOT/src/main/java/com/example/webclustering/ ディレクトリーに保存します。

    package com.example.webclustering;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import jakarta.servlet.ServletException;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    
    @WebServlet(urlPatterns = {"/clustering"})
    public class MyServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws IOException {
            response.setContentType("text/html;charset=UTF-8");
            long t;
            User user = (User) request.getSession().getAttribute("user");
            if (user == null) {
                t = System.currentTimeMillis();
                user = new User(t);
                request.getSession().setAttribute("user", user);
            }
            try (PrintWriter out = response.getWriter()) {
                out.println("<!DOCTYPE html>");
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Web clustering demo</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>Session id " + request.getSession().getId() + "</h1>");
                out.println("<h1>User Created " + user.getCreated() + "</h1>");
                out.println("<h1>Host Name " + System.getenv("HOSTNAME") + "</h1>");
                out.println("</body>");
                out.println("</html>");
            }
        }
    }
    Copy to Clipboard Toggle word wrap

    MyServlet.java の内容は、クライアントが HTTP リクエストを送信するエンドポイントを定義します。

  5. 以下の内容で Java ファイル User.java を作成し、ファイルを APPLICATION_ROOT/src/main/java/com/example/webclustering/ ディレクトリーに保存します。

    package com.example.webclustering;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
        private final long created;
    
        User(long created) {
            this.created = created;
        }
        public long getCreated() {
            return created;
        }
    }
    Copy to Clipboard Toggle word wrap
  6. アプリケーションをパッケージ化します。

    $ mvn package
    Copy to Clipboard Toggle word wrap
  7. オプション: JBoss EAP ベアメタルプラットフォームでアプリケーションを実行するには、JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の使用 にある手順に従いますが、以下の違いがあります。

    1. JBoss EAP ベアメタルプラットフォームでは、以下の例のように、java -jar コマンドを使用して複数の起動可能な JAR インスタンスを実行できます。

      $ java -jar target/web-clustering-bootable.jar -Djboss.node.name=node1
      
      $ java -jar target/web-clustering-bootable.jar -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=10
      Copy to Clipboard Toggle word wrap
    2. 検証: ノード 1 インスタンス (http://127.0.0.1:8080/clustering) でアプリケーションにアクセスできます。ユーザーセッション ID とユーザー相関時間を書き留めます。

      このインスタンスを強制終了した後に、ノード 2 インスタンス (http://127.0.0.1:8090/clustering) にアクセスできます。ユーザーは、セッション ID とノード 1 インスタンスのユーザー作成時間と一致する必要があります。

  8. オプション: JBoss EAP OpenShift プラットフォームでアプリケーションを実行するには、JBoss EAP OpenShift プラットフォームでの起動可能な JAR の使用 にある手順に従いますが、以下の手順を完了させてください。

    1. <cloud/> 要素をプラグイン設定に追加します。以下に例を示します。

      <plugins>
         <plugin>
             ... <!-- You must evolve the existing configuration with the <cloud/> element  -->
             <configuration >
                 ...
                 <cloud/>
              </configuration>
          </plugin>
      </plugins>
      Copy to Clipboard Toggle word wrap
    2. アプリケーションをリビルドします。

      $ mvn clean package
      Copy to Clipboard Toggle word wrap
    3. oc login コマンドを使用して、OpenShift インスタンスにログインします。
    4. OpenShift で新しいプロジェクトを作成します。以下に例を示します。

      $ oc new-project bootable-jar-project
      Copy to Clipboard Toggle word wrap
    5. JBoss EAP OpenShift プラットフォームで web-clustering アプリケーションを実行するには、Pod が実行されているサービスアカウントに承認アクセスが付与される必要があります。サービスアカウントは Kubernetes REST API にアクセスできます。以下の例は、サービスアカウントに付与されている認可アクセスを示しています。

      $ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
      Copy to Clipboard Toggle word wrap
    6. 以下の oc コマンドを入力してアプリケーションイメージを作成します。

      $ mkdir target/openshift && cp target/web-clustering-bootable.jar target/openshift 
      1
      
      
      $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm 
      2
      
      
      $ oc new-build --strategy source --binary --image-stream openjdk-17 --name web-clustering 
      3
      
      
      $ oc start-build web-clustering --from-dir target/openshift 
      4
      Copy to Clipboard Toggle word wrap
      1
      target/openshift サブディレクトリーを作成します。パッケージ化されたアプリケーションは openshift サブディレクトリーにコピーされます。
      2
      最新の OpenJDK 17 イメージストリームタグおよびイメージ情報を OpenShift プロジェクトにインポートします。
      3
      web-clustering ディレクトリーおよび OpenJDK 17 イメージストリームに基づいてビルド設定を作成します。
      4
      target/openshift サブディレクトリーをバイナリー入力として使用し、アプリケーションをビルドします。
    7. アプリケーションをデプロイします。

      $ oc new-app web-clustering -e KUBERNETES_NAMESPACE=$(oc project -q)
      
      $ oc expose svc/web-clustering
      Copy to Clipboard Toggle word wrap
      重要

      現在の OpenShift namespace の他の Pod を表示するには KUBERNETES_NAMESPACE 環境変数を使用する必要があります。使用しない場合、サーバーは default 名前空間から Pod の取得を試行します。

    8. ルートの URL を取得します。

      $ oc get route web-clustering --template='{{ .spec.host }}'
      Copy to Clipboard Toggle word wrap
    9. 直前のコマンドから返された URL を使用して、Web ブラウザーでアプリケーションにアクセスします。以下に例を示します。

      http://ROUTE_NAME/clustering
      Copy to Clipboard Toggle word wrap

      ユーザーセッション ID およびユーザー作成時間を書き留めます。

    10. アプリケーションを 2 つの Pod にスケーリングします。

      $ oc scale --replicas=2 deployments web-clustering
      Copy to Clipboard Toggle word wrap
    11. 以下のコマンドを実行して、利用可能な OpenShift Pod のリストを表示し、Pod のビルドステータスを確認します。

      $ oc get pods
      Copy to Clipboard Toggle word wrap
    12. oc delete pod web-clustering-POD_NAME コマンドを使用して最も古い Pod を強制終了します。POD_NAME は最も古い Pod の名前です。
    13. アプリケーションを再度アクセスします。

      http://ROUTE_NAME/clustering
      Copy to Clipboard Toggle word wrap

      想定される結果: 新規 Pod で生成されるセッション ID および作成時間は、終了した Pod のものに一致します。これは、Web セッションデータストレージが有効になっていることを示します。

11.15. CLI スクリプトを使用した起動可能な JAR の HTTP 認証の有効化

CLI スクリプトを使用して、起動可能な JAR の HTTP 認証を有効にできます。このスクリプトは、セキュリティーレルムとセキュリティードメインをサーバーに追加します。

前提条件

  • 9.minor.micro.Final-redhat-XXXXX などの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば 9.0.1.Final-redhat-00009 です。
  • Maven プロジェクトを作成し、HTTP 認証を必要とするアプリケーションを作成するための依存関係を追加した。起動可能な JAR Maven プロジェクトの作成 を参照してください。

    重要

    Maven プロジェクトを設定する場合は、Maven archetype 設定で HTTP 認証値を指定する必要があります。以下に例を示します。

    $ mvn archetype:generate \
    -DgroupId=com.example.auth \
    -DartifactId=authentication \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    cd authentication
    Copy to Clipboard Toggle word wrap
    注記

    この手順の例では、以下のプロパティーを指定します。

    • Maven プラグインバージョンの場合は、${bootable.jar.maven.plugin.version} です。

    これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。

    <properties>
        <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap

手順

  1. 以下の内容を pom.xml ファイルの <build> 要素に追加します。以下に例を示します。

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>datasources-web-server</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap

    この例には、elytron サブシステムが含まれる datasources-web-server Galleon レイヤーが含まれていました。

  2. src/main/webapp/WEB-INF ディレクトリーの web.xml ファイルを更新します。以下に例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app version="4.0"
             xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>Example Realm</realm-name>
        </login-config>
    
    </web-app>
    Copy to Clipboard Toggle word wrap
  3. java ファイルを保存するディレクトリーを作成します。

    $ mkdir -p APPLICATION_ROOT/src/main/java/com/example/authentication/
    Copy to Clipboard Toggle word wrap

    APPLICATION_ROOT は Maven プロジェクトのルートディレクトリーです。

  4. 以下の内容で Java ファイル TestServlet.java を作成し、ファイルを APPLICATION_ROOT/src/main/java/com/example/authentication/ ディレクトリーに保存します。

    package com.example.authentication;
    
    import jakarta.servlet.annotation.HttpMethodConstraint;
    import jakarta.servlet.annotation.ServletSecurity;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet(urlPatterns = "/hello")
    @ServletSecurity(httpMethodConstraints = { @HttpMethodConstraint(value = "GET", rolesAllowed = { "Users" }) })
    public class TestServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
            PrintWriter writer = resp.getWriter();
            writer.println("Hello " + req.getUserPrincipal().getName());
            writer.close();
        }
    
    }
    Copy to Clipboard Toggle word wrap
  5. authentication.cli などの CLI スクリプトを作成し、これを APPLICATION_ROOT/scripts ディレクトリーなどの起動可能な JAR のアクセス可能なディレクトリーに保存します。スクリプトには以下のコマンドが含まれている必要があります。

    /subsystem=elytron/properties-realm=bootable-realm:add(users-properties={relative-to=jboss.server.config.dir, path=bootable-users.properties, plain-text=true}, groups-properties={relative-to=jboss.server.config.dir, path=bootable-groups.properties})
    /subsystem=elytron/security-domain=BootableDomain:add(default-realm=bootable-realm, permission-mapper=default-permission-mapper, realms=[{realm=bootable-realm, role-decoder=groups-to-roles}])
    
    /subsystem=undertow/application-security-domain=other:write-attribute(name=security-domain, value=BootableDomain)
    Copy to Clipboard Toggle word wrap
  6. プラグイン <configuration> 要素に以下の設定抽出を追加します。

    <cli-sessions>
        <cli-session>
            <script-files>
                <script>scripts/authentication.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>
    Copy to Clipboard Toggle word wrap

    この例は、サーバーに定義されたセキュリティードメインにデフォルトの undertow セキュリティードメインを設定する authentication.cli CLI スクリプトを示しています。

    注記

    パッケージ化時にではなく、実行時に CLI スクリプトを実行するオプションがあります。これを行うには、この手順をスキップして手順 10 に進みます。

  7. Maven プロジェクトのルートディレクトリーで、JBoss EAP JAR Maven プラグインが起動可能な JAR に追加するプロパティーファイルを保存するディレクトリーを作成します。

    $ mkdir -p APPLICATION_ROOT/extra-content/standalone/configuration/
    Copy to Clipboard Toggle word wrap

    APPLICATION_ROOT は、アプリケーションの pom.xml 設定ファイルが含まれるディレクトリーです。

    このディレクトリーには、bootable-users.properties および bootable-groups.properties などのファイルを保存します。

    bootable-users.properties ファイルには以下の内容が含まれます。

    testuser=bootable_password
    Copy to Clipboard Toggle word wrap

    bootable-groups.properties ファイルには以下の内容が含まれます。

    testuser=Users
    Copy to Clipboard Toggle word wrap
  8. 以下の extra-content-content-dirs 要素を既存の <configuration> 要素に追加します。

    <extra-server-content-dirs>
                <extra-content>extra-content</extra-content>
    </extra-server-content-dirs>
    Copy to Clipboard Toggle word wrap

    extra-content ディレクトリーには、プロパティーファイルが含まれます。

  9. アプリケーションを起動可能な JAR としてパッケージ化します。

    $ mvn package
    Copy to Clipboard Toggle word wrap
  10. アプリケーションを起動します。

    mvn wildfly-jar:run
    Copy to Clipboard Toggle word wrap

    手順 6 をスキップし、ビルド中に CLI スクリプトを実行しないことを選択した場合は、次のコマンドを使用してアプリケーションを起動します。

    mvn wildfly-jar:run -Dwildfly.bootable.arguments=--cli-script=scripts/authentication.cli
    Copy to Clipboard Toggle word wrap
  11. サーブレットを呼び出しますが、認証情報は指定しないでください。

    curl -v http://localhost:8080/hello
    Copy to Clipboard Toggle word wrap

    想定される出力:

    HTTP/1.1 401 Unauthorized
    ...
    WWW-Authenticate: Basic realm="Example Realm"
    Copy to Clipboard Toggle word wrap
  12. サーバーを呼び出して認証情報を指定します。以下に例を示します。

    $ curl -v -u testuser:bootable_password http://localhost:8080/hello
    Copy to Clipboard Toggle word wrap

    起動可能な JAR に対して HTTP 認証が有効になっていることを示す HTTP 200 ステータスが返されます。以下に例を示します。

    HTTP/1.1 200 OK
    ....
    Hello testuser
    Copy to Clipboard Toggle word wrap

第12章 Helm チャートの使用例

Helm は、OpenShift 上で JBoss EAP XP 5.0 アプリケーションをビルド、デプロイ、保守できるようにするオープンソースのパッケージマネージャーです。

JBoss EAP XP 5.0 で Helm チャートを使用すると、以下が可能になります。

  • OpenShift Source-to-Image (S2I) を使用して、Git リポジトリーでホストされている Maven プロジェクトからアプリケーションをビルドする。
  • OpenShift クラスター (TLS 設定、アプリケーションを公開するためのパブリックルートなど) を使用して、緊密に統合された OpenShift にアプリケーションイメージをデプロイする。
  • Helm チャートを使用してアプリケーションイメージをビルドし、JBoss EAP XP Operator を使用してイメージをデプロイする。
  • その他の方法を使用して JBoss EAP XP のアプリケーションイメージをビルドし、Helm チャートを使用する。
重要
  • JBoss EAP XP 5.0 を使用して Java アプリケーションをビルドし、起動可能な Jar または Jakarta デプロイメントを作成できます (JBoss EAP 8.0 と同様)。
  • Java アプリケーションが起動可能な Jar である場合、JBoss EAP XP 5.0 の Helm チャートを (デフォルトの build.modebootable-jar に設定して) 使用してアプリケーションイメージをビルドできます。
  • Java アプリケーションが Jakarta デプロイメントの場合、Helm チャートの build.modes2i に設定することで、Source-to-Image (JBoss EAP 8.0 と同様) を使用してアプリケーションイメージをビルドできます。

12.1. Helm チャートを使用した JBoss EAP アプリケーションのビルドとデプロイ

ビルドとデプロイの値を設定することで、Helm チャートを使用して JBoss EAP XP アプリケーションをビルドできます。ビルド設定には、アプリケーションコードをホストする Git リポジトリーへの URL を指定する必要があります。出力は、ビルドされたアプリケーションイメージを含む ImageStreamTag リソースです。アプリケーションをデプロイするには、ビルドされたアプリケーションイメージを含む ImageStreamTag リソースを指定する必要があります。出力は、デプロイされたアプリケーションと、OpenShift 内外からアプリケーションにアクセスするために使用できるその他の関連リソースです。

前提条件

  • OpenShift 開発コンソールにアクセスできる。
  • JBoss EAP XP アプリケーションのソースコードは Git リポジトリーにホストされている。
  • アプリケーションは Maven プロジェクトである。
  • org.jboss.eap.plugins:eap-maven-plugin を使用して JBoss EAP XP 5.0 サーバーをプロビジョニングするようにアプリケーションを設定した。
注記
  • この手順では、OpenShift 開発コンソールの使用にのみ焦点を当てています。
  • 一部のフォームセクションはデフォルトで折りたたまれています。コンテンツを展開して表示するには、> をクリックします。これらのセクションを更新しなくても続行できます。

手順

  1. OpenShift 開発コンソールにログインします。

    1. ドロップダウンメニューで、Helm をクリックします。
    2. 右上隅で create をクリックし、Helm Release をクリックします。
    3. JBoss EAP XP 5 を選択します。
    4. create をクリックし、YAML ビュー で設定を選択します。
  2. ソースリポジトリーからアプリケーションイメージをビルドします。

    build:
      uri: <git repository URL of your application>
      mode: s2i
    Copy to Clipboard Toggle word wrap
  3. オプション: sourceSecret キーを使用して build セクションにシークレットを入力します。

    build:
      uri: <git repository URL of your application>
      mode: s2i
      sourceSecret: <name of secret login to your Git repository>
    Copy to Clipboard Toggle word wrap

検証

  • アプリケーションが正常にデプロイされると、OpenShift 開発コンソールの Helm リリースの横にデプロイ済みバッジが表示されます。

12.1.1. JBoss EAP XP で Source-to-Image と Helm チャートを使用する

アプリケーションの pom.xmleap-maven-plugin を使用して、JBoss EAP サーバーをプロビジョニングします。このプラグインが OpenShift プロファイル、デフォルトプロファイル、または他の任意のアクティブなプロファイルで設定され、OpenShift プロファイルが他のすべてよりも優先されることを確認します。

重要

build.mode を S2I に設定する必要があります。これは、JBoss EAP XP Helm チャートのデフォルト値が bootable-jar であるためです。

注記

build.s2i.featurePacksbuild.s2i.galleonLayers、および build.s2i.channels フィールドは非推奨になりました。

12.1.2. JBoss EAP XP で起動可能な JAR と Helm チャートを使用する

JBoss EAP XP 5.0 では、アプリケーションを起動可能な JAR としてビルドできます。その方法の詳細は、起動可能な JAR を参照してください。

さらに、JBoss EAP XP 5.0 では、JBoss EAP XP 5.0 用の Helms Chart を設定して、起動可能な JAR に基づきアプリケーションをビルドできます。

前提条件

  • OpenShift 開発コンソールにログインしている。
  • JBoss EAP XP アプリケーションのソースコードは Git リポジトリーにホストされている。
  • アプリケーションは Maven プロジェクトである。Maven プラグイン org.wildfly.plugins:wildfly-jar-maven-plugin を使用して起動可能な JAR を作成するようにアプリケーションを設定した。詳細は、起動可能な JAR Maven プロジェクトの作成 を参照してください。
12.1.2.1. Bootable JAR を使用してアプリケーションイメージをビルドする

OpenShift 開発コンソールのビルドセクションを設定することで、Helms チャートを使用して Bootable で JBoss EAP XP アプリケーションイメージをビルドできます。

注記
  • Helm チャートを使用してアプリケーションをビルドする場合は、Git リポジトリーを参照する Git URL を build.url フィールドに指定する必要があります。
  • build.mode フィールドを bootable-jar に設定する必要があります。

12.2. JBoss EAP XP の Helm チャートにおける永続データストレージ用の OpenShift ボリューム

OpenShift ボリュームを使用すると、コンテナーで、クラウドストレージ、ネットワークファイルシステム (NFS)、ホストマシンなどのさまざまなソースからのデータを保存および共有できます。OpenShift のパッケージマネージャーである Helm チャートを使用すると、一貫性のある再現可能な方法でアプリケーションをデプロイできます。Helm チャートにボリュームマウントを追加すると、デプロイメント間でアプリケーションがデータを維持できるようになります。

12.2.1. JBoss EAP XP で Helm チャートを使用してボリュームをマウントする

この手順では、JBoss EAP XP で Helm チャートを使用してシークレットをボリュームとしてマウントする方法を説明します。さらに、これを使用して ConfigMap をマウントすることもできます。この手順を実行すると、アプリケーションがデータにアクセスして使用できるようになり、不正なアクセスや改ざんからデータを保護できます。たとえば、シークレットをボリュームとしてマウントすると、シークレットに保存した機密データが、シークレットがマウントされているデプロイメントを実行している POD にファイルとして表示されます。

前提条件

  • OpenShift 開発コンソールにアクセスできる。
  • secret を作成している。たとえば、keystore.jks などのファイルを参照する eap-app-secret という名前のシークレットを作成します。
  • コンテナーのファイルシステム内でシークレットをマウントする場所を特定している。たとえば、ディレクトリー /etc/jgroups-encrypt-secre-secret-volume は、keystore.jks などのシークレットファイルがマウントされる場所です。
  • Git リポジトリーでホストされている JBoss EAP XP アプリケーションのソースコード。
  • アプリケーションは Maven プロジェクトである。
  • org.jboss.eap.plugins:eap-maven-plugin を使用して JBoss EAP XP 5.0 サーバーをプロビジョニングするようにアプリケーションを設定した。

手順

  1. OpenShift 開発コンソールにログインします。

    1. ドロップダウンメニューで、Helm をクリックします。
    2. 右上隅で create をクリックし、Helm Release をクリックします。
    3. JBoss EAP XP 5 を選択します。
    4. create をクリックし、YAML ビュー で設定を選択します。
  2. deploy.volumes フィールドにボリュームを指定して YAML ファイルを編集し、使用するシークレットを設定します。ボリュームの名前とシークレットの secretName を指定する必要があります。

    volumes:
      - name: eap-jgroups-keystore-volume
        secret:
            secretName: eap-app-secret
    Copy to Clipboard Toggle word wrap
  3. デプロイメント設定の deploy.volumeMounts を使用して、ファイルシステムにボリュームをマウントします。

    volumeMounts:
      - name: eap-jgroups-keystore-volume
        mountPath: /etc/jgroups-encrypt-secret-volume
        readOnly: true
    Copy to Clipboard Toggle word wrap

    Pod が起動すると、コンテナーが keystore.jks ファイルを /etc/jgroups-encrypt-secret-volume/keystore.jks にマウントします。

第13章 JBoss EAP での可観測性

開発者またはシステム管理者の場合、可観測性 は、アプリケーションからの特定の信号に基づいて、アプリケーションの問題の場所と原因を特定するために使用できる一連のプラクティスとテクノロジーです。最も一般的なシグナルは、メトリック、イベント、およびトレースです。JBoss EAP は、可観測性 のために OpenTelemetry を使用します。

13.1. JBoss EAP の OpenTelemetry

OpenTelemetry は、アプリケーションのテレメトリーデータを計測、生成、収集、およびエクスポートするために使用できるツール、アプリケーションプログラミングインターフェイス (API)、およびソフトウェア開発キット (SDK) のセットです。テレメトリーデータには、メトリック、ログ、およびトレースが含まれます。アプリケーションのテレメトリーデータを分析すると、アプリケーションのパフォーマンスを向上させるのに役立ちます。JBoss EAP は、opentelemetry サブシステムを通じて OpenTelemetry 機能を提供します。

注記

Red Hat JBoss Enterprise Application Platform 8.0 は、OpenTelemetry トレース機能のみを提供します。

重要

OpenTelemetry はテクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。Red Hat のテクノロジープレビュー機能のサポート範囲の詳細は、https://access.redhat.com/ja/support/offerings/techpreview を参照してください。

13.2. JBoss EAP での OpenTelemetry 設定

opentelemetry サブシステムを使用して、JBoss EAP で OpenTelemetry のさまざまな側面を設定します。これらには、エクスポーター、スパンプロセッサー、およびサンプラーが含まれます。

exporter
トレースを分析して視覚化するには、トレースを OpenTelemetry Collector (OTLP) などのコレクターにエクスポートします。OpenTelemetry プロトコルをサポートする任意のコレクターを使用するように JBoss EAP を設定できます。
スパンプロセッサー
スパンプロセッサーは、スパンを生成したとき、またはバッチでエクスポートするように設定できます。エクスポートするトレースの数を設定することもできます。
sampler
サンプラーを設定することにより、記録するトレースの数を設定できます。

設定例

次の XML は、デフォルト値を含む完全な OpenTelemetry 設定の例です。変更を加えても JBoss EAP はデフォルト値を保持しないため、設定が異なる場合があります。

<subsystem xmlns="urn:wildfly:opentelemetry:1.0"
        service-name="example">
    <exporter
        type="otlp"
        endpoint="http://localhost:4317"/>
    <span-processor
        type="batch"
        batch-delay="4500"
        max-queue-size="128"
        max-export-batch-size="512"
        export-timeout="45"/>
    <sampler
        type="on"/>
</subsystem>
Copy to Clipboard Toggle word wrap
注記

OpenShift ルートオブジェクトを使用して OpenTelemetry Collector エンドポイントに接続することはできません。代わりに、http://<ip_address>:<port> または http://<service_name>:<port> を使用してください。

13.3. JBoss EAP での OpenTelemetry トレース

JBoss EAP は OpenTelemetry トレースを提供し、ユーザーリクエストがアプリケーションのさまざまな部分を通過する際の進行状況を追跡するのに役立ちます。トレースを分析することで、アプリケーションのパフォーマンスを向上させ、可用性の問題をデバッグできます。

OpenTelemetry トレースは、次のコンポーネントで構成されています。

Trace
要求がアプリケーションで実行する操作のコレクション。
Span
トレース内の単一の操作。要求、エラー、および期間 (RED) メトリックを提供し、スパンコンテキストを含みます。
スパンコンテキスト
含まれているスパンが一部であるリクエストを表す一意の識別子のセット。

JBoss EAP は、Jakarta RESTful Web Services アプリケーションに対する REST 呼び出し、およびコンテナー管理の Jakarta RESTful Web Services クライアント呼び出しを自動的にトレースします。JBoss EAP は、REST 呼び出しを次のように暗黙的にトレースします。

  • 受信要求ごとに:

    • JBoss EAP は、要求からスパンコンテキストを抽出します。
    • JBoss EAP は新しいスパンを開始し、要求が完了するとそれを閉じます。
  • 送信要求ごとに:

    • JBoss EAP は、スパンコンテキストを要求に挿入します。
    • JBoss EAP は新しいスパンを開始し、要求が完了するとそれを閉じます。

暗黙的なトレースに加えて、詳細なトレースのために Tracer インスタンスをアプリケーションに挿入することにより、カスタムスパンを作成できます。

13.4. JBoss EAP で OpenTelemetry トレースを有効にする

JBoss EAP で OpenTelemetry トレースを使用するには、最初に opentelemetry サブシステムを有効にする必要があります。

前提条件

  • JBoss EAP 8.0 と JBoss EAP XP 5.0 がインストールされている。

手順

  1. 管理 CLI を使用して OpenTelemetry エクステンションを追加します。

    /extension=org.wildfly.extension.opentelemetry:add
    Copy to Clipboard Toggle word wrap
  2. 管理 CLI を使用して opentelemetry サブシステムを有効にします。

    /subsystem=opentelemetry:add
    Copy to Clipboard Toggle word wrap
  3. Reload JBoss EAP.

    reload
    Copy to Clipboard Toggle word wrap

13.5. opentelemetry サブシステムの設定

opentelemetry サブシステムを設定して、トレースのさまざまな側面を設定できます。トレースの監視に使用するコレクターに基づいてこれらを設定します。

前提条件

手順

  1. トレースのエクスポータータイプを設定します。

    構文

    /subsystem=opentelemetry:write-attribute(name=exporter-type, value=<exporter_type>)
    Copy to Clipboard Toggle word wrap

    /subsystem=opentelemetry:write-attribute(name=exporter-type, value=otlp)
    Copy to Clipboard Toggle word wrap

  2. トレースをエクスポートするエンドポイントを設定します。

    構文

    /subsystem=opentelemetry:write-attribute(name=endpoint, value=<URL:port>)
    Copy to Clipboard Toggle word wrap

    /subsystem=opentelemetry:write-attribute(name=endpoint, value=http://localhost:4317)
    Copy to Clipboard Toggle word wrap

  3. トレースをエクスポートするサービス名を設定します。

    構文

    /subsystem=opentelemetry:write-attribute(name=service-name, value=<service_name>)
    Copy to Clipboard Toggle word wrap

    /subsystem=opentelemetry:write-attribute(name=service-name, value=exampleOpenTelemetryService)
    Copy to Clipboard Toggle word wrap

第14章 参考資料

14.1. MicroProfile Config リファレンス

14.1.1. デフォルトの MicroProfile Config 属性

MicroProfile Config 仕様はデフォルトで 3 つの ConfigSource 定義します。

ConfigSources は、通常の番号に従って並べ替えられます。後のデプロイメントのために設定を上書きする必要がある場合、上位の序数の ConfigSource よりも下位の序数の ConfigSource が上書きされます。

Expand
表14.1 デフォルトの MicroProfile Config 属性
ConfigSourceordinal

システムプロパティー

400

環境変数

300

プロパティーファイル META-INF/microprofile-config.properties はクラスパスにあります。

100

14.1.2. MicroProfile Config SmallRye ConfigSources

microprofile-config-smallrye プロジェクトは、デフォルトの MicroProfile Config ConfigSource に加えて使用できる ConfigSource を定義します。

Expand
表14.2 追加の MicroProfile Config 属性
ConfigSourceordinal

サブシステムの config-source

100

ディレクトリーからの ConfigSource

100

クラスからの ConfigSource

100

これらの ConfigSource には明示的な ordinal が指定されていません。MicroProfile Config 仕様にあるデフォルトの ordinal 値は継承されます。

14.2. MicroProfile Fault Tolerance リファレンス

14.2.1. MicroProfile Fault Tolerance 設定プロパティー

SmallRye Fault Tolerance 仕様では、MicroProfile Fault Tolerance 仕様に定義されたプロパティーに加えて、以下のプロパティーを定義します。

Expand
表14.3 MicroProfile Fault Tolerance 設定プロパティー
プロパティーデフォルト値説明

io.smallrye.faulttolerance.mainThreadPoolSize

100

スレッドプール内のスレッドの最大数。

io.smallrye.faulttolerance.mainThreadPoolQueueSize

-1 (無制限)

スレッドプールが使用するキューのサイズ。

14.3. MicroProfile JWT リファレンス

14.3.1. MicroProfile Config JWT 標準プロパティー

microprofile-jwt-smallrye サブシステムは以下の MicroProfile Config 標準プロパティーをサポートします。

Expand
表14.4 MicroProfile Config JWT 標準プロパティー
プロパティーデフォルト説明

mp.jwt.verify.publickey

NONE

サポートされている形式のいずれかを使用してエンコードされた公開鍵の文字列表現。mp.jwt.verify.publickey.location を設定している場合は設定しないでください。

mp.jwt.verify.publickey.location

NONE

公開鍵の場所は、相対パスまたは URL です。mp.jwt.verify.publickey を設定している場合は設定しないでください。

mp.jwt.verify.issuer

NONE

検証している JWT トークンの iss 要求の想定される値。

microprofile-config.properties の設定例:

mp.jwt.verify.publickey.location=META-INF/public.pem
mp.jwt.verify.issuer=jwt-issuer
Copy to Clipboard Toggle word wrap

14.4. MicroProfile OpenAPI リファレンス

14.4.1. MicroProfile OpenAPI 設定プロパティー

JBoss EAP は、標準の MicroProfile OpenAPI 設定プロパティーに加え、以下の追加の MicroProfile OpenAPI プロパティーをサポートします。これらのプロパティーは、アプリケーションスコープおよびグローバルスコープの両方に適用できます。

Expand
表14.5 JBoss EAP での MicroProfile OpenAPI プロパティー
プロパティーデフォルト値説明

mp.openapi.extensions.enabled

true

OpenAPI エンドポイントの登録を有効または無効にします。

false に設定すると、OpenAPI ドキュメントの生成を無効にします。config サブシステムを使用するか、/META-INF/microprofile-config.properties などの設定ファイルの各アプリケーションに対して、グローバルに値を設定できます。

このプロパティーをパラメーター化することで、実稼働や開発などの異なる環境で microprofile-openapi-smallrye を選択的に有効または無効にすることができます。

このプロパティーを使用すると、指定の仮想ホストに関連付けられたアプリケーションが MicroProfile OpenAPI モデルを生成するかを制御できます。

mp.openapi.extensions.path

/openapi

このプロパティーを使用して、仮想ホストに関連付けられた複数のアプリケーションの OpenAPI ドキュメントを生成することができます。

同じ仮想ホストに関連付けられた各アプリケーションに、個別の mp.openapi.extensions.path を設定します。

mp.openapi.extensions.servers.relative

true

自動生成されるサーバーレコードが絶対的なものであるか OpenAPI エンドポイントの場所と相対的であるかを示します。

root 以外のコンテキストパスが存在するところで OpenAPI ドキュメントの利用者が OpenAPI エンドポイントのホストとの関連した REST サービスへの有効な URL を作成できるようにするサーバーレコードが必要です。

値が true の場合は、サーバーレコードが OpenAPI エンドポイントの場所に対して相対的であることを示します。生成されたレコードには、デプロイメントのコンテキストパスが含まれます。

false に設定すると、JBoss EAP XP は、デプロイメントにアクセスできるすべてのプロトコル、ホスト、およびポートを含むサーバーレコードを生成します。

14.5. MicroProfile Reactive Messaging リファレンス

次に、MicroProfile Config 仕様で必要なリアクティブメッセージングプロパティーキー接頭辞のリストを示します。

  • mp.messaging.incoming.[channel-name].[attribute]=[value]
  • mp.messaging.outgoing.[channel-name].[attribute]=[value]
  • mp.messaging.connector.[connector-name].[attribute]=[value]

channel-name@Incoming.value() または @Outgoing.value() のいずれかであることに注意してください。明確にするために、コネクターメソッドのペアのこの例を見てみましょう。

@Outgoing("to")
public int send() {
   int i = // Randomly generated...
   return i;
}

@Incoming("from")
public void receive(int i) {
   // Process payload
}
Copy to Clipboard Toggle word wrap

この例では、必要なプロパティー接頭辞は次のとおりです。

  • mp.messaging.incoming.from.これは、receive() メソッドを定義します。
  • mp.messaging.outgoing.to.これは send() メソッドを定義します。

これは一例であることを忘れないでください。異なるコネクターは異なるプロパティーを認識するため、指定する接頭辞は、設定するコネクターによって異なります。

14.5.2. リアクティブメッセージングストリームとユーザー初期化コード間のデータ交換の例

以下は、リアクティブメッセージングストリームと、ユーザーが @Channel および Emitter コンストラクトを介してトリガーしたコードとの間のデータ交換の例です。

@Path("/")
@ApplicationScoped
class MyBean {
    @Inject @Channel("my-stream")
    Emitter<String> emitter; 
1


    Publisher<String> dest;

    public MyBean() { 
2

    }

    @Inject
    public MyBean(@Channel("my-stream") Publisher<String> dest) {
        this.dest = subscribeAndAllowMultipleSubscriptions(dest);
    }

    private Publisher subscribeAndAllowMultipleSubscriptions(Publisher delegate) {
    } 
3
 
4
 
5


    @POST
    public PublisherBuilder<String> publish(@FormParam("value") String value) {
        return emitter.send(value);
    }

    @GET
    public Publisher poll() {
        return dest;
    }

    @PreDestroy
    public void close() { 
6


    }
}
Copy to Clipboard Toggle word wrap

インラインの詳細:

1
コンストラクターによって挿入されたパブリッシャーをラップします。
2
Java 仕様のコンテキストと依存関係の挿入 (CDI) を満たすには、この空のコンストラクターが必要です。
3
デリゲートにサブスクライブします。
4
複数のサブスクリプションを処理できるパブリッシャーでデリゲートをラップします。
5
ラッピングパブリッシャーは、デリゲートからのデータを転送します。
6
リアクティブメッセージングが提供するパブリッシャーからアンサブスクライブします。

この例では、MicroProfile Reactive Messaging が my-stream メモリーストリームをリッスンしているため、Emitter を介して送信されたメッセージは、この挿入されたパブリッシャーで受信されます。ただし、このデータエクスチェンジを成功させるには、次の条件が満たされている必要があることに注意してください。

  1. Emitter.send() を呼び出す前に、チャネルにアクティブなサブスクリプションが存在する必要があります。この例では、コンストラクターによって呼び出される subscribeAndAllowMultipleSubscriptions() メソッドにより、Bean がユーザーコード呼び出しに使用できるようになるまでにアクティブなサブスクリプションが確実に存在することに注意してください。
  2. 挿入された Publisher には、Subscription を 1 つだけ持つことができます。受信側のパブリッシャーを REST 呼び出しで公開する場合、poll() メソッドを呼び出すたびに、dest パブリッシャーへの新しいサブスクリプションが生成されます。挿入されたデータを各クライアントにブロードキャストするには、独自のパブリッシャーを実装する必要があります。

14.5.3. Apache Kafka ユーザー API

Apache Kafka ユーザー API を使用して、Kafka が受信したメッセージに関する詳細情報を取得し、Kafka がメッセージを処理する方法に影響を与えることができます。この API は、io/smallrye/reactive/messaging/kafka/api パッケージに保存されており、次のクラスで構成されています。

  • IncomingKafkaRecordMetadata.このメタデータには、次の情報が含まれています。

    • Message で表される Kafka レコード key
    • Message に使用される Kafka topicpartition、およびそれら内の offset
    • MessagetimestamptimestampType
    • Message headers。これらは、アプリケーションが生成側で添付し、消費側で受信できる情報です。
  • OutgoingKafkaRecordMetadata.このメタデータを使用して、Kafka がメッセージを処理する方法を指定またはオーバーライドできます。次の情報が含まれています。

    • key。Kafka はこれをメッセージキーとして扱います。
    • Kafka に使用させたい topic
    • partition
    • Kafka が生成する timestamp が必要ない場合は、タイムスタンプ。
    • headers.
  • KafkaMetadataUtil には、OutgoingKafkaRecordMetadataMessage に書き込み、IncomingKafkaRecordMetadataMessage から読み取るためのユーティリティーメソッドが含まれています。
重要

Kafka にマップされていないチャネルに送信された MessageOutgoingKafkaRecordMetadata を書き込む場合、リアクティブメッセージングフレームワークはそれを無視します。逆に、Kafka にマップされていないチャネルからの Message から IncomingKafkaRecordMetadata を読み取ると、そのメッセージは null として返されます。

メッセージ key の書き込みと読み取りの方法の例
@Inject
@Channel("from-user")
Emitter<Integer> emitter;

@Incoming("from-user")
@Outgoing("to-kafka")
public Message<Integer> send(Message<Integer> msg) {
    // Set the key in the metadata
    OutgoingKafkaRecordMetadata<String> md =
            OutgoingKafkaRecordMetadata.<String>builder()
                .withKey("KEY-" + i)
                .build();
    // Note that Message is immutable so the copy returned by this method
    // call is not the same as the parameter to the method
    return KafkaMetadataUtil.writeOutgoingKafkaMetadata(msg, md);
}

@Incoming("from-kafka")
public CompletionStage<Void> receive(Message<Integer> msg) {
    IncomingKafkaRecordMetadata<String, Integer> metadata =
        KafkaMetadataUtil.readIncomingKafkaMetadata(msg).get();

    // We can now read the Kafka record key
    String key = metadata.getKey();

    // When using the Message wrapper around the payload we need to explicitly ack
    // them
    return msg.ack();
}
Copy to Clipboard Toggle word wrap
microprofile-config.properties ファイルの Kafka マッピングの例
kafka.bootstrap.servers=kafka:9092

mp.messaging.outgoing.to-kafka.connector=smallrye-kafka
mp.messaging.outgoing.to-kafka.topic=some-topic
mp.messaging.outgoing.to-kafka.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer
mp.messaging.outgoing.to-kafka.key.serializer=org.apache.kafka.common.serialization.StringSerializer

mp.messaging.incoming.from-kafka.connector=smallrye-kafka
mp.messaging.incoming.from-kafka.topic=some-topic
mp.messaging.incoming.from-kafka.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer
mp.messaging.incoming.from-kafka.key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
Copy to Clipboard Toggle word wrap
注記

送信チャネルには key.serializer を指定し、受信チャネルには key.deserializer を指定する必要があります。

14.5.4. Kafka コネクターの MicroProfile Config プロパティーファイルの例

これは、Kafka コネクターのシンプルな microprofile-config.properties ファイルの例です。そのプロパティーは、「外部メッセージングシステムと統合するための MicroProfile リアクティブメッセージングコネクター」に示されている例のプロパティーに対応しています。

kafka.bootstrap.servers=kafka:9092

mp.messaging.outgoing.to.connector=smallrye-kafka
mp.messaging.outgoing.to.topic=my-topic
mp.messaging.outgoing.to.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer

mp.messaging.incoming.from.connector=smallrye-kafka
mp.messaging.incoming.from.topic=my-topic
mp.messaging.incoming.from.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer
Copy to Clipboard Toggle word wrap
Expand
表14.6 エントリーの議論
エントリー説明

tofrom

これらは "チャネル" です。

sendreceive

これらは "メソッド" です。

to チャネルは send() メソッドにあり、from チャネルは receive() メソッドにあることに注意してください。

kafka.bootstrap.servers=kafka:9092

これは、アプリケーションが接続する必要のある Kafka ブローカーの URL を指定します。次のように、チャネルレベルで URL を指定することもできます: mp.messaging.outgoing.to.bootstrap.servers=kafka:9092

mp.messaging.outgoing.to.connector=smallrye-kafka

これは to チャネルが Kafka からのメッセージを受信することを示しています。

SmallRye リアクティブメッセージングは、アプリケーションをビルドするためのフレームワークです。smallrye-kafka 値は、SmallRye リアクティブメッセージング固有であることに注意してください。Galleon を使用して独自のサーバーをプロビジョニングしている場合は、microprofile-reactive-messaging-kafka Galleon レイヤーを含めることで、Kafka 統合を有効にできます。

mp.messaging.outgoing.to.topic=my-topic

これは、my-topic という Kafka トピックにデータを送信することを示しています。

Kafka の "トピック" は、メッセージが保存および公開されるカテゴリーまたはフィード名です。すべての Kafka メッセージはトピックに編成されています。プロデューサーアプリケーションはトピックにデータ to を書き込み、コンシューマーアプリケーションは from トピックからデータを読み取ります。

mp.messaging.outgoing.to.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer

これは、コネクターに IntegerSerializer を使用して、send() メソッドがトピックに書き込むときに出力する値をシリアル化するように指示します。Kafka は、標準の Java タイプ用のシリアライザーを提供します。org.apache.kafka.common.serialization.Serializer を実装するクラスを作成して独自のシリアライザーを実装し、そのクラスをデプロイメントに含めることができます。

mp.messaging.incoming.from.connector=smallrye-kafka

これは、from チャネルを使用して Kafka からのメッセージを受信することを示しています。繰り返しますが、smallrye-kafka 値は、SmallRye のリアクティブメッセージング固有です。

mp.messaging.incoming.from.topic=my-topic

これは、コネクターが my-topic と呼ばれる Kafka トピックからデータを読み取る必要があることを示しています。

mp.messaging.incoming.from.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer

これは、receive() メソッドを呼び出す前に、IntegerDeserializer を使用してトピックから値をデシアライズするようにコネクターに指示します。org.apache.kafka.common.serialization.Deserializer を実装するクラスを作成して独自のデシリアライザーを実装し、そのクラスをデプロイメントに含めることができます。

注記

このプロパティーのリストはすべてを網羅したものではありません。詳細は、SmallRye Reactive Messaging Apache Kafka のドキュメントを参照してください。

必須の MicroProfile Reactive Messaging 接頭辞

MicroProfile Reactive Messaging 仕様では、Kafka に次のメソッドプロパティーキー接頭辞が必要です。

  • mp.messaging.incoming.[channel-name].[attribute]=[value]`
  • mp.messaging.outgoing.[channel-name].[attribute]=[value]`
  • mp.messaging.connector.[connector-name].[attribute]=[value]`

channel-name@Incoming.value() または @Outgoing.value() のいずれかであることに注意してください。

次に、次のメソッドペアの例を考えてみましょう。

@Outgoing("to")
public int send() {
    int i = // Randomly generated...
    return i;
}

@Incoming("from")
public void receive(int i) {
    // Process payload
}
Copy to Clipboard Toggle word wrap

このメソッドペアの例では、次の必須のプロパティー接頭辞に注意してください。

  • mp.messaging.incoming.from.この接頭辞は、receive() メソッドの設定としてプロパティーを選択します。
  • mp.messaging.outgoing.to.この接頭辞は、send() メソッドの設定としてプロパティーを選択します。
14.5.4.1. 安全な MicroProfile Reactive Messaging Apache Kafka コネクターの設定

自己署名証明書を使用して Apache Kafka コネクタークライアントを設定するには、microprofile-config.properties ファイルで client-ssl-context を定義します。これはコネクターレベルとチャネルレベルで実行できます。

次の例は、SSL/TLS で保護された Apache Kafka コネクターを設定する方法を示しています。

コネクターレベルの client-ssl-context 定義の例

mp.messaging.incoming.from.security.protocol=SSL
mp.messaging.outgoing.to.security.protocol=SSL
mp.messaging.connector.smallrye-kafka.wildfly.elytron.ssl.context=exampleSSLContext
Copy to Clipboard Toggle word wrap

mp.messaging.connector.smallrye-kafka.wildfly.elytron.ssl.context 属性は、自己署名証明書を使用する場合にのみ必要です。

重要

実稼働環境では自己署名証明書を使用しないでください。認証局 (CA) が署名した証明書のみ使用してください。

チャネルの client-ssl-context は次のように指定できます。

チャネルレベルの client-ssl-context 定義の例

mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
Copy to Clipboard Toggle word wrap

この例では、exampleSSLContext は、受信チャネル from にのみ関連付けられています。

Expand
表14.7 エントリーの議論
エントリー説明

mp.messaging.incoming.from.security.protocol=SSL

これは、ブローカーに接続するときにセキュアな受信チャネル接続を使用することを指定します。

mp.messaging.outgoing.to.security.protocol=SSL

これは、ブローカーに接続するときにセキュアな送信チャネル接続を使用することを指定します。

mp.messaging.connector.smallrye-kafka.wildfly.elytron.ssl.context

Kafka ブローカーが認証局 (CA) 署名付き証明書でセキュリティーが保護されている場合は、この属性を指定する必要はありません。

自己署名証明書を使用する場合は、管理モデルの /subsystem=elytron/client-ssl-context=* の下の Elytron サブシステムで定義されている SSLContext を指定します。

重要

実稼働環境では自己署名証明書を使用しないでください。認証局 (CA) が署名した証明書のみ使用してください。

次の管理 CLI コマンドを使用して client-ssl-context を定義できます。

/subsystem=elytron/client-ssl-context=exampleSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager)
Copy to Clipboard Toggle word wrap

注記

SCRAM-SHA-512 認証で SSL/TLS 接続を使用すると、SSL/TLS プロトコルは暗号化を提供しますが、認証には使用されません。SCRAM-SHA-512 プロトコルで接続を確立するには、Configure MicroProfile Reactive Messagaging Kafka connector to use SASL_PLAINTEXT and SASL_SSL authentication protocol を参照してください。

Apache Kafka は Simple Authentication and Security Layer (SASL)プロトコルを使用して、Apache Kafka リスナー に接続されているクライアントを認証します。暗号化されていない プレーン タイプと暗号化された tls タイプ通信を使用するように リスナー を設定できます。Streams for Apache Kafka は、Salted Challenged Response Authentication Mechanism (SCRAM)プロトコル(SASL SCRAM-SHA-512)と組み合わせて SASL を使用して認証を提供します。Kafka カスタムリソースと KafkaUser カスタムリソース YAML ファイルを定義して、両方のタイプの リスナー の認証を設定する必要があります。

SASL がサーバー上で設定されている場合、Kafka リスナー が SCRAM-SHA-512 認証を使用するように設定されている場合、クライアントはセキュリティープロトコルを指定する必要があります。TLS で暗号化された リスナー に接続する場合、このプロトコルは SASL_SSL である必要があります。リスナー が暗号化されていない場合、プロトコルは SASL_PLAINTEXT である必要があります。クライアント設定では、SCRAM-SHA-512 を使用するように SASL メカニズムを指定する必要があります。

注記

SCRAM-SHA-512 認証が SSL/TLS 接続で使用されると、SSL/TLS プロトコルは暗号化を提供しますが、認証には使用されません。SSL/TLS を使用して接続をセキュリティー保護するには、セキュアな MicroProfile Reactive Messaging Apache Kafka コネクターの設定 を参照してください。

プレーン タイプの暗号化されていない通信および SASL SCRAM-SHA-512 認証を使用する リスナー にクライアント認証を設定します。

前提条件

  • Streams for Apache Kafka クラスター Operator がインストールされている。

    注記

    クラスター Operator はデフォルトで Secret リソースを生成します。クライアント設定の username および password は、Secret リソースで定義されるユーザー名とパスワードと一致する必要があります。

    カスタム シークレット リソースの作成の詳細については、カスタム パスワード設定 を参照 してください。

    Operator によって生成された Secret リソースの詳細は、Operator によって 生成された Secret を参照して ください。

手順

  1. Kafka カスタムリソースを YAML ファイルとして定義します。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: myproject
    spec:
      kafka:
        # ...
        listeners:
          - name: plain
            port: 9092
            type: internal
            tls: true
            authentication:
              type: scram-sha-512
    Copy to Clipboard Toggle word wrap
  2. KafkaUser カスタムリソースを YAML ファイルとして定義します。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaUser
    metadata:
      name: my-user
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      authentication:
        type: scram-sha-512
    Copy to Clipboard Toggle word wrap

    KafkaUser .authentication 定義は リスナー.authentication 定義と一致する必要があります。

  3. microprofile-config.properties ファイルでクライアントを設定します。

    # General config to set up SASL over PLAINTEXT
    mp.messaging.connector.smallrye-kafka.bootstrap.servers=localhost:9092
    mp.messaging.connector.smallrye-kafka.sasl.mechanism=SCRAM-SHA-512
    mp.messaging.connector.smallrye-kafka.security.protocol=SASL_PLAINTEXT
    mp.messaging.connector.smallrye-kafka.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="my-user" \
      password="my-password";
    Copy to Clipboard Toggle word wrap
    注記

    ユーザー名パスワード は、クラスターオペレーターによって生成された Secret リソースのユーザー名とパスワードと一致する必要があります。

14.5.5. AMQP コネクターの MicroProfile Config プロパティーファイルの例

これは、Advanced Message Queuing Protocol (AMQP) コネクター用の単純な microprofile-config.properties ファイルの例です。そのプロパティーは、外部メッセージングシステムと統合するための MicroProfile リアクティブメッセージングコネクター に示された例のプロパティーに対応しています。

amqp-host=localhost
amqp-port=5672
amqp-username=artemis
amqp-password=artemis

mp.messaging.outgoing.to.connector=smallrye-amqp
mp.messaging.outgoing.to.address=my-topic

mp.messaging.incoming.from.connector=smallrye-amqp
mp.messaging.incoming.from.address=my-topic
Copy to Clipboard Toggle word wrap
Expand
表14.8 エントリーの議論
エントリー説明

tofrom

これらは "チャネル" です。

sendreceive

これらは "メソッド" です。

to チャネルは send() メソッドにあり、from チャネルは receive() メソッドにあることに注意してください。

amqp-host=localhost

これは、アプリケーションが接続する必要のある AMQP ブローカーの URL を指定します。mp.messaging.outgoing.to.host=localhost のように、チャネルレベルで URL を指定することもできます。URL が指定されていない場合、値はデフォルトで localhost になります。

amqp-port=5672

これは、AMQP ブローカーのポートを指定します。

mp.messaging.outgoing.to.connector=smallrye-amqp

これは、チャネルが AMQP にメッセージを送信することを示します。

SmallRye リアクティブメッセージングは、アプリケーションをビルドするためのフレームワークです。smallrye-amqp 値は、SmallRye リアクティブメッセージング固有であることに注意してください。Galleon を使用して独自のサーバーをプロビジョニングしている場合は、microprofile-reactive-messaging-amqp Galleon レイヤーを含めることで、AMQP 統合を有効にできます。

mp.messaging.outgoing.to.address=my-topic

これは、アドレス my-topic の AMQP キューにデータを送信することを示します。mp.messaging.outgoing.to.address の値を指定しない場合は、デフォルトでチャネル (この例では "to") に設定されます。

mp.messaging.incoming.from.connector=smallrye-amqp

これは、AMQP ブローカーからメッセージを受信するために from チャネルを使用することを示します。繰り返しますが、smallrye-amqp 値は、SmallRye のリアクティブメッセージング固有です。

mp.messaging.incoming.from.address=my-topic

これは、from チャネルの AMQP キュー my-topic からデータを読み取ることを示します。

SmallRye Reactive Messaging の AMQP コネクターでサポートされているプロパティーの完全なリストは、SmallRye Reactive Messaging AMQP コネクター設定リファレンス を参照してください。

安全な AMQP ブローカーへの接続

SSL/TLS および Simple Authentication and Security Layer (SASL) で保護された AMQ ブローカーに接続するには、microprofile-config.properties ファイルで、接続に使用する client-ssl-context を定義します。これはコネクターレベルでもチャネルレベルでも実行できます。

コネクターレベルの client-ssl-context 定義の例

amqp-use-ssl=true
mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context=exampleSSLContext
Copy to Clipboard Toggle word wrap

mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context 属性は、自己署名証明書を使用する場合にのみ必要です。

重要

実稼働環境では自己署名証明書を使用しないでください。認証局 (CA) によって署名された証明書のみ使用してください。

次のようにして、チャネルの client-ssl-context を指定することもできます。

チャネルレベルの client-ssl-context 定義の例

mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
Copy to Clipboard Toggle word wrap

この例では、exampleSSLContext は、受信チャネル from にのみ関連付けられています。

Expand
表14.9 エントリーの議論
エントリー説明

amqp-use-ssl

これは、ブローカーに接続するときに安全な接続を使用することを指定します。

mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context

AMQ ブローカーが証明機関 (CA) の署名付き証明書で保護されている場合は、この属性を指定する必要はありません。

自己署名証明書を使用する場合は、管理モデルの /subsystem=elytron/client-ssl-context=* の下の Elytron サブシステムで定義されている SSLContext を指定します。

重要

実稼働環境では自己署名証明書を使用しないでください。認証局 (CA) によって署名された証明書のみ使用してください。

次の管理 CLI コマンドを使用して client-ssl-context を定義できます。

/subsystem=elytron/client-ssl-context=exampleSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager)
Copy to Clipboard Toggle word wrap

詳細は、JBoss EAP での SSL/TLS の設定 ガイドの クライアント証明書の信頼ストアと信頼マネージャーの設定 および 双方向 SSL/TLS 用のサーバー証明書の設定 を参照してください。

14.6. OpenTelemetry リファレンス

14.6.1. OpenTelemetry サブシステムの属性

opentelemetry サブシステムの属性を変更して、その動作を設定できます。属性は、設定するアスペクト (exporter、sampler、span processor) ごとにグループ化されています。

Expand
表14.10 Exporter 属性グループ
属性説明デフォルト値

エンドポイント

OpenTelemetry がトレースをプッシュする URL。これをエクスポーターがリッスンする URL に設定します。

http://localhost:14250/

exporter-type

トレースの送信先のエクスポーター。次のいずれかです。

  • jaeger.使用するエクスポーターは Jaeger です。
  • otlp.使用するエクスポーターは、OpenTelemetry プロトコルで動作します。

jaeger

Expand
表14.11 Sampler 属性グループ
属性説明デフォルト値

ratio

トレースとエクスポートの比率。値は 0.0 から 1.0 の間でなければなりません。たとえば、アプリケーションによって作成された 100 トレースごとに 1 つのトレースをエクスポートするには、値を 0.01 に設定します。この属性は、属性 sampler-typeratio として設定した場合にのみ有効になります。

 

Expand
表14.12 Span processor 属性グループ
属性説明デフォルト値

batch-delay

JBoss EAP による 2 つの連続したエクスポート間のミリ秒単位の間隔。この属性は、属性 span-processor-typebatch として設定した場合にのみ有効になります。

5000

export-timeout

キャンセルされる前にエクスポートが完了するまでの最大時間 (ミリ秒単位)。

30000

max-export-batch-size

各バッチで公開されるトレースの最大数。この数は、max-queue-size の値以下である必要があります。この属性を設定できるのは、属性 span-processor-typebatch として設定した場合のみです。

512

max-queue-size

エクスポートする前にキューに入れるトレースの最大数。アプリケーションがさらにトレースを作成する場合、それらは記録されません。この属性は、属性 span-processor-typebatch として設定した場合にのみ有効になります。

2048

span-processor-type

使用する span processor のタイプ。値は次のいずれかになります。

  • batch: JBoss EAP は、以下の属性を使用して定義されたバッチでトレースをエクスポートします。

    • batch-delay
    • max-export-batch-size
    • max-queue-size
  • simple: JBoss EAP エクスポートトレースは終了するとすぐに実行されます。

batch

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る