gpt4 book ai didi

Tomcat、WELD 3、CDI 2、WeldTerminalListener

转载 作者:行者123 更新时间:2023-11-28 23:15:52 25 4
gpt4 key购买 nike

尝试使用 CDI 2.0 设置一个应该在 Tomcat 8.5 上运行的 maven web 项目。所以我必须安装 jboss WELD 3。

What is the relation between Weld, CDI and Java EE versions?

这里有 POM 声明(只有“weld-servlet-core”)...

WELD - POM declaration (docs.jboss.org)

我在 web.xml 中声明的“WeldTerminalListener”出现错误:

<!-- This listener should always be the last registered listener -->
<listener>
<listener-class>org.jboss.weld.servlet.WeldTerminalListener</listener-class>
</listener>

错误:java.lang.ClassNotFoundException:org.jboss.weld.servlet.WeldTerminalListener


如果我使用以下 POM 声明,它工作正常:

<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>2.3.5.Final</version>
</dependency>

weld-servlet(不带“-core”)3 仅作为 alpha 可用。版本 2 不支持 CDI 2.0。

那么我需要 POM 中的哪个依赖项才能运行它?

最佳答案

Weld 3 更改了一些工件名称。这是已更改的 shaded 工件,请参阅 this part of documentation .

即,在 Weld 2 中 weld-servlet 是此 JAR 的阴影版本,因此在 Weld 3 中等效于 weld-servlet-shaded .

在您的情况下,您可以使用此着色版本 (org.jboss.weld.servlet:weld-servlet-shaded) 或核心版本 (org.jboss.weld. servlet:weld-servlet-core).

关于监听器的类,可以check yourself on GH ,但故事是它也被改变了(向 JDK 9+ 中的包冲突问好)。现在是:

<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>

Weld 文档(适用于 3.0.3.Final)对此有错误信息。我会确保它在下一个版本中得到纠正(感谢您指出这一点)。

关于Tomcat、WELD 3、CDI 2、WeldTerminalListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49672950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com