web server apache tomcat11-33-CDI

前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App -- Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

web server apache tomcat11-11-Jasper 2 JSP Engine

web server apache tomcat11-12-SSL/TLS Configuration

web server apache tomcat11-13-SSI

web server apache tomcat11-14-CGI

web server apache tomcat11-15-proxy

web server apache tomcat11-16-mbean

web server apache tomcat11-17-default-servlet

web server apache tomcat11-18-clusting 集群

web server apache tomcat11-19-load balance 负载均衡

web server apache tomcat11-20-connectors 连接器

web server apache tomcat11-21-monitor and management 监控与管理

web server apache tomcat11-22-logging 日志

web server apache tomcat11-23-APR

web server apache tomcat11-24-Virtual Hosting and Tomcat

web server apache tomcat11-25-Advanced IO and Tomcat

web server apache tomcat11-26-maven jars

web server apache tomcat11-27-Security Considerations

web server apache tomcat11-28-Windows Service

web server apache tomcat11-29-Windows Authentication

web server apache tomcat11-30-The Tomcat JDBC Connection Pool

web server apache tomcat11-31-websocket

web server apache tomcat11-32-rewrite

web server apache tomcat11-33-CDI

web server apache tomcat11-34-Ahead of Time compilation support

Tomcat 中添加 CDI 和 JAX-RS 支持指南

CDI 2 支持

CDI 2 支持由 modules/owb 可选模块提供。它打包了 Apache OpenWebBeans 项目,并允许将 CDI 2 支持添加到 Tomcat 容器中。该模块的构建过程使用 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.xml 中 Server 元素的嵌套中添加以下监听器来为容器中的所有 Web 应用程序启用 CDI 支持:

<Listener className="org.apache.webbeans.web.tomcat.OpenWebBeansListener" optional="true" startWithoutBeansXml="false" />

如果 CDI 容器加载失败,监听器将产生非致命错误。

也可以通过在 Server 元素的嵌套中的 webapp context.xml 文件中添加以下监听器来为单个 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 支持,CDI 2 支持应已在容器或 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 2 支持在容器级别可用,则该 JAR 文件也可以放置在 Tomcat lib 文件夹中,但在这种情况下,CXF Servlet 声明必须根据需要单独添加到每个 Web 应用程序中(通常由 JAR 中存在的 Web 片段加载)。应使用的 CXF Servlet 类是 org.apache.cxf.cdi.CXFCdiServlet,应将其映射到 JAX-RS 资源可用的所需根路径。

整个 Web 应用程序应通过 Jakarta EE 的 Tomcat 迁移工具处理。

Eclipse Microprofile 支持

ASF(Apache Software Foundation)提供了使用 CDI 2 扩展实现 Eclipse Microprofile 规范的工件。安装了 CDI 2 和 JAX-RS 支持后,它们将可供单个 Web 应用程序使用。

以下实现可用(参考:org.apache.tomee.microprofile.TomEEMicroProfileListener)作为必须添加到 Web 应用程序 /WEB-INF/lib 文件夹的 Maven 工件:

  • 配置: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
  • 开放追踪: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 令牌:注意:仅供参考,在 Apache TomEE 外不可用;Maven 工件:org.apache.tomee:mp-jwt,CDI 扩展类:org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension

参考资料

https://tomcat.apache.org/tomcat-11.0-doc/cdi.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容