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

目次

はじめに

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

CDIサポート

CDIサポートは、modules/owbオプションモジュールによって提供されます。これはApache OpenWebBeansプロジェクトをパッケージ化し、TomcatコンテナにCDIサポートを追加することを可能にします。このモジュールのビルドプロセスには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のバージョンに依存)は、Jakarta EE向けのTomcat移行ツールで処理された後、Tomcatインストールのlibフォルダに配置する必要があります。
CDIサポートは、server.xml内のServer要素の中に以下のリスナーを追加することで、コンテナ内のすべてのWebアプリケーションに対して有効にできます。
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />
CDIコンテナのロードに失敗した場合、このリスナーは致命的ではないエラーを生成します。
CDIサポートは、個々のWebアプリケーションレベルで、Webアプリケーションのcontext.xmlファイル内のServer要素の中に以下のリスナーを追加することでも有効にできます。
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansContextLifecycleListener" />

JAX-RSサポート

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

JAX-RSサポートをビルドするプロセスは以下の通りです。

cd $TOMCAT_SRC/modules/cxf
mvn clean && mvn package
結果として生成されるtarget/tomcat-cxf-x.y.z.jarファイル(x.y.zはビルド時に使用されるApache CXFのバージョンに依存)は、その後、目的のWebアプリケーションの/WEB-INF/libフォルダに配置する必要があります。

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