CDI 2、JAX-RS 和依赖库支持
目录
简介
CDI 和 JAX-RS 是许多其他 API 和库的依赖项。本指南介绍如何使用 Tomcat 源代码中提供的两个可选模块在 Tomcat 中添加对它们的 支持。
CDI 2 支持
CDI 2 支持由可选模块 `modules/owb` 提供。该模块打包了 Apache OpenWebBeans 项目,并允许将 CDI 2 支持添加到 Tomcat 容器中。该模块的构建过程使用 Apache Maven,并且由于它使用许多公开可用的 JAR 文件构建,因此无法作为二进制包提供。
构建 CDI 支持的过程如下。
cd $TOMCAT_SRC/modules/owb
mvn clean && mvn package
然后可以通过在 `server.xml` 中的 `Server` 元素内添加以下监听器来为容器中的所有 Web 应用程序启用 CDI 支持。
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />
也可以通过在 Web 应用程序 `context.xml` 文件的 `Server` 元素内添加以下监听器来在单个 Web 应用程序级别启用 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
如果 CDI 2 支持在容器级别可用,则 JAR 文件也可以放置在 Tomcat `lib` 文件夹中,但在这种情况下,必须在每个 Web 应用程序中根据需要单独添加 CXF Servlet 声明(它通常由 JAR 文件中存在的 Web 片段加载)。应该使用的 CXF Servlet 类是 `org.apache.cxf.cdi.CXFCdiServlet`,并且应该映射到 JAX-RS 资源可用的所需根路径。
整个 Web 应用程序应该由 Tomcat Jakarta EE 迁移工具处理。
Eclipse Microprofile 支持
ASF 提供的工件使用 CDI 2 扩展实现了 Eclipse Microprofile 规范。安装 CDI 2 和 JAX-RS 支持后,它们将可供单个 Web 应用程序使用。
以下实现可用(参考:org.apache.tomee.microprofile.TomEEMicroProfileListener
),作为 Maven 工件,必须添加到 webapp 的 /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 Tokens:注意:仅供参考,在 Apache TomEE 之外不可用;Maven 工件:
org.apache.tomee:mp-jwt
CDI 扩展类:org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension