介绍
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
在 target/tomcat-owb-x.y.z.jar 处生成的 JAR(其中 x.y.z 取决于构建期间使用的 Apache OpenWebBeans 版本)
应由用于 Jakarta EE 的 Tomcat 迁移工具处理,然后放入 Tomcat 安装的 lib 文件夹中。
然后,可以通过在 Server 元素内嵌套的 server.xml 中添加以下侦听器,为容器中的所有 Web 应用程序启用 CDI 支持:
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />
如果 CDI 容器加载失败,侦听器将产生非致命错误。
还可以通过将以下侦听器添加到嵌套在 Server 元素内的 webapp context.xml 文件中,
在单个 webapp 级别启用 CDI 支持:
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansContextLifecycleListener" />
JAX-RS 支持
JAX-RS 支持由 modules/cxf 可选模块提供。
它打包了 Apache CXF 项目,并允许将 JAX-RS 支持添加到各个 Web 应用程序。
该模块的构建过程使用 Apache Maven,并且不作为二进制捆绑包提供,
因为它是使用许多公开可用的 JAR 构建的。
支持依赖于 CDI 支持,该支持之前应该安装在容器或 Web 应用程序级别。
构建 JAX-RS 支持的过程如下。
cd $TOMCAT_SRC/modules/cxf
mvn clean && mvn package
然后,应将 target/tomcat-cxf-x.y.z.jar 处生成的 JAR
(其中 x.y.z 取决于构建期间使用的 Apache CXF 版本)放入所需 Web 应用程序的 /WEB-INF/lib 文件夹中。
如果 CDI 支持在容器级别可用,则 JAR 也可以放在 Tomcat lib 文件夹中,但在这种情况下,
必须根据需要在每个 Web 应用程序中单独添加 CXF Servlet 声明(它通常由 JAR 中存在的 Web 片段加载)。
应该使用的 CXF Servlet 类是 org.apache.cxf.cdi.CXFCdiServlet,应该映射到 JAX-RS 资源将可用的所需根路径。