CDI、JAX-RS 和相关库支持

目录

简介

CDI 和 JAX-RS 是许多其他 API 和库的依赖项。本指南解释了如何使用 Tomcat 源代码中提供的两个可选模块,在 Tomcat 中添加对它们的支持。

CDI 支持

CDI 支持由可选模块 modules/owb 提供。它打包了 Apache OpenWebBeans 项目,并允许为 Tomcat 容器添加 CDI 支持。该模块的构建过程使用 Apache Maven,并且不作为二进制包提供,因为它使用许多公开可用的 JAR 文件构建。

构建 CDI 支持的步骤如下。

cd $TOMCAT_SRC/modules/owb
mvn clean && mvn package
生成的 JAR 文件 target/tomcat-owb-x.y.z.jar (其中 x.y.z 取决于构建时使用的 Apache OpenWebBeans 版本) 应由用于 Jakarta EE 的 Tomcat 迁移工具处理,然后放置到 Tomcat 安装目录的 lib 文件夹中。
然后,可以通过在 server.xmlServer 元素内添加以下监听器,为容器中的所有 Web 应用启用 CDI 支持
<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 支持,后者应已在容器或 Web 应用级别安装。

构建 JAX-RS 支持的步骤如下。

cd $TOMCAT_SRC/modules/cxf
mvn clean && mvn package
生成的 JAR 文件 target/tomcat-cxf-x.y.z.jar (其中 x.y.z 取决于构建时使用的 Apache CXF 版本) 应随后放置到目标 Web 应用程序的 /WEB-INF/lib 文件夹中。

如果 CDI 支持在容器级别可用,JAR 也可以放置在 Tomcat 的 lib 文件夹中,但在那种情况下,CXF Servlet 声明必须根据需要单独添加到每个 Web 应用中(它通常由 JAR 中存在的 Web 片段加载)。应使用的 CXF Servlet 类是 org.apache.cxf.cdi.CXFCdiServlet,并应映射到 JAX-RS 资源将可用的所需根路径。