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
target/tomcat-owb-x.y.z.jar (其中 x.y.z 取決於建置期間使用的 Apache OpenWebBeans 版本) 中產生的 JAR 應由 Tomcat 遷移工具處理,以適用於 Jakarta EE,然後放置到 Tomcat 安裝的 lib 資料夾中。
然後,可以在 server.xml 中新增下列監聽器,嵌套在 Server 元素內,以針對容器中的所有 Web 應用程式啟用 CDI 支援
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />
如果 CDI 容器載入失敗,監聽器將產生非致命錯誤。
CDI 支援也可以透過將下列監聽器新增至嵌套在 Server 元素內的 Webapp context.xml 檔案,在個別 Webapp 層級啟用
<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansContextLifecycleListener" />

JAX-RS 支援

JAX-RS 支援由 modules/cxf 選用模組提供。它封裝 Apache CXF 專案,並允許為個別 Webapp 新增 JAX-RS 支援。模組的建置程序使用 Apache Maven,且由於使用許多公開的 JAR 建置,因此無法作為二進位套件提供。此支援仰賴 CDI 2 支援,而 CDI 2 支援應已事先安裝在容器或 Webapp 層級。

建置 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 2 支援在容器層級可用,也可以將 JAR 放置在 Tomcat lib 資料夾中,但這種情況下,CXF Servlet 宣告必須視需要個別新增至每個 Webapp(通常由 JAR 中存在的 Web 片段載入)。應使用的 CXF Servlet 類別是 org.apache.cxf.cdi.CXFCdiServlet,且應對應至 JAX-RS 資源可用的所需根路徑。

整個 Webapp 應由 Tomcat 遷移工具處理,以適用於 Jakarta EE。

Eclipse Microprofile 支援

ASF 人工製品可使用 CDI 2 擴充功能來實作 Eclipse Microprofile 規格。一旦安裝 CDI 2 和 JAX-RS 支援,個別 Webapp 便可以使用這些支援。

下列實作可用(參考: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