CDI 2、JAX-RS、および依存ライブラリのサポート

目次

はじめに

CDIとJAX-RSは、多くの他のAPIやライブラリの依存関係です。このガイドでは、Tomcatソースに提供されている2つのオプションモジュールを使用して、Tomcatでそれらのサポートを追加する方法について説明します。

CDI 2サポート

CDI 2サポートは、modules/owbオプションモジュールによって提供されます。これはApache OpenWebBeansプロジェクトをパッケージ化し、TomcatコンテナにCDI 2サポートを追加することを可能にします。このモジュールのビルドプロセスはApache Mavenを使用しており、多数のパブリックに利用可能なJARを使用してビルドされているため、バイナリバンドルとしては提供されていません。

CDIサポートをビルドする手順は以下のとおりです。

cd $TOMCAT_SRC/modules/owb
mvn clean && mvn package
target/tomcat-owb-x.y.z.jar(x.y.zはビルド時に使用されたApache OpenWebBeansのバージョンによって異なります)にある結果のJARは、Jakarta EE用のTomcat移行ツールで処理してから、Tomcatインストールのlibフォルダに配置する必要があります。
その後、server.xmlServer要素内に次のリスナーを追加することで、コンテナ内のすべてのウェブアプリケーションでCDIサポートを有効にできます。
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />
CDIコンテナのロードに失敗した場合、リスナーは致命的ではないエラーを生成します。
CDIサポートは、Server要素内に次のリスナーをウェブアプリケーションのcontext.xmlファイルに追加することで、個々のウェブアプリケーションレベルでも有効にできます。
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansContextLifecycleListener" />

JAX-RSサポート

JAX-RSサポートは、modules/cxfオプションモジュールによって提供されます。これはApache CXFプロジェクトをパッケージ化し、個々のウェブアプリケーションにJAX-RSサポートを追加することを可能にします。このモジュールのビルドプロセスはApache Mavenを使用しており、多数のパブリックに利用可能なJARを使用してビルドされているため、バイナリバンドルとしては提供されていません。このサポートは、コンテナレベルまたはウェブアプリケーションレベルのいずれかで事前にインストールされているCDI 2サポートに依存します。

JAX-RSサポートをビルドする手順は以下のとおりです。

cd $TOMCAT_SRC/modules/cxf
mvn clean && mvn package
target/tomcat-cxf-x.y.z.jar(x.y.zはビルド時に使用されたApache CXFのバージョンによって異なります)にある結果のJARは、目的のウェブアプリケーションの/WEB-INF/libフォルダに配置する必要があります。

CDI 2サポートがコンテナレベルで利用可能な場合、JARをTomcatのlibフォルダに配置することもできますが、その場合は、必要に応じて各ウェブアプリケーションにCXFサーブレットの宣言を個別に追加する必要があります(通常はJARに存在するウェブフラグメントによってロードされます)。使用する必要があるCXFサーブレットクラスはorg.apache.cxf.cdi.CXFCdiServletであり、JAX-RSリソースが利用可能な目的のルートパスにマップする必要があります。

ウェブアプリケーション全体は、Jakarta EE用のTomcat移行ツールで処理する必要があります。

Eclipse MicroProfileサポート

Eclipse MicroProfile仕様を実装するASFアーティファクトは、CDI 2拡張機能を使用して利用できます。CDI 2とJAX-RSのサポートがインストールされると、個々のウェブアプリケーションで使用できるようになります。

次の実装がMavenアーティファクトとして利用可能です(参照:org.apache.tomee.microprofile.TomEEMicroProfileListener)。これらはウェブアプリケーションの/WEB-INF/libフォルダに追加する必要があります。

  • 設定:Mavenアーティファクト:org.apache.geronimo.config:geronimo-config CDI拡張クラス:org.apache.geronimo.config.cdi.ConfigExtension
  • フォールトトレランス:Mavenアーティファクト:org.apache.geronimo.safeguard:safeguard-parent CDI拡張クラス:org.apache.safeguard.impl.cdi.SafeguardExtension
  • ヘルス:Mavenアーティファクト:org.apache.geronimo:geronimo-health CDI拡張クラス:org.apache.geronimo.microprofile.impl.health.cdi.GeronimoHealthExtension
  • メトリクス:Mavenアーティファクト:org.apache.geronimo:geronimo-metrics CDI拡張クラス:org.apache.geronimo.microprofile.metrics.cdi.MetricsExtension
  • OpenTracing:Mavenアーティファクト:org.apache.geronimo:geronimo-opentracing CDI拡張クラス:org.apache.geronimo.microprofile.opentracing.microprofile.cdi.OpenTracingExtension
  • OpenAPI:Mavenアーティファクト:org.apache.geronimo:geronimo-openapi CDI拡張クラス:org.apache.geronimo.microprofile.openapi.cdi.GeronimoOpenAPIExtension
  • RESTクライアント:Mavenアーティファクト:org.apache.cxf:cxf-rt-rs-mp-client CDI拡張クラス:org.apache.cxf.microprofile.client.cdi.RestClientExtension
  • JSON Webトークン:注:参考としてのみ、Apache TomEE以外では使用できません;Mavenアーティファクト:org.apache.tomee:mp-jwt CDI拡張クラス:org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension