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.xml
のServer
要素内に次のリスナーを追加することで、コンテナ内のすべてのウェブアプリケーションでCDIサポートを有効にできます。<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />
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