介绍
CDI 和 JAX-RS 是许多其他 API 和库的依赖项。 本指南介绍了如何使用 Tomcat 源中提供的两个可选模块在 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
处生成的 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 2 支持,该支持之前应该安装在容器或 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 2 支持在容器级别可用,则 JAR 也可以放在 Tomcat lib
文件夹中,但在这种情况下,
必须根据需要在每个 Web 应用程序中单独添加 CXF Servlet 声明(它通常由 JAR 中存在的 Web 片段加载)。
应该使用的 CXF Servlet 类是 org.apache.cxf.cdi.CXFCdiServlet
,应该映射到 JAX-RS 资源将可用的所需根路径。
整个 Web 应用程序应由 Jakarta EE 的 Tomcat 迁移工具处理。
Eclipse Microprofile 支持
ASF 工件可用于使用 CDI 2 扩展实现 Eclipse Microprofile 规范。 安装 CDI 2 和 JAX-RS 支持后,它们将可供各个 Web 应用程序使用。
以下实现作为 Maven 工件提供(参考:org.apache.tomee.microprofile.TomEEMicroProfileListener
),
必须将其添加到 webapp /WEB-INF/lib
文件夹中:
-
Configuration:Maven 工件:
org.apache.geronimo.config:geronimo-config
CDI 扩展类:org.apache.geronimo.config.cdi.ConfigExtension
-
Fault Tolerance:Maven 工件:
org.apache.geronimo.safeguard:safeguard-parent
CDI 扩展类:org.apache.safeguard.impl.cdi.SafeguardExtension
-
Health:Maven 工件:
org.apache.geronimo:geronimo-health
CDI 扩展类:org.apache.geronimo.microprofile.impl.health.cdi.GeronimoHealthExtension
-
Metrics: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 client:Maven 工件:
org.apache.cxf:cxf-rt-rs-mp-client
CDI 扩展类:org.apache.cxf.microprofile.client.cdi.RestClientExtension
-
JSON Web Tokens:注意:仅供参考,在 Apache TomEE 之外不可用;Maven 工件:
org.apache.tomee:mp-jwt
CDI 扩展类:org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension