首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat,焊接3,CDI 2,WeldTerminalListener

Tomcat,焊接3,CDI 2,WeldTerminalListener
EN

Stack Overflow用户
提问于 2018-04-05 12:55:07
回答 2查看 1.1K关注 0票数 0

尝试用CDI2.0设置一个maven web项目,这个项目应该在Tomcat8.5上运行。所以我得安装jboss焊接3。

Weld、CDI和Java版本之间有什么关系?

带着POM声明离开这里(只有“焊缝-servlet-核心”).

焊接- POM声明(docs.jboss.org)

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

代码语言:javascript
复制
<!-- 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声明,它可以正常工作:

代码语言:javascript
复制
<dependency>
  <groupId>org.jboss.weld.servlet</groupId>
  <artifactId>weld-servlet</artifactId>
  <version>2.3.5.Final</version>
</dependency>

焊缝-servlet(没有"-core") 3只能作为alpha提供。版本2是无法实现CDI2.0的。

那么,我需要POM中的哪个依赖项来运行它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-06 06:31:03

焊接3改变了一些工件的名称。改变的是shaded工件,请参阅这部分文件

也就是说,在焊接2中,weld-servlet是这个JAR的阴影版本,所以在Weld 3中等效的是weld-servlet-shaded

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

至于侦听器的类,您可以检查你自己的生长激素,但故事是它也被修改了(向JDK 9+中的包冲突问好)。现在是:

代码语言:javascript
复制
<listener>
    <listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>

焊接文档(3.0.3,for)在这方面有错误信息。我将确保它在下一个版本中得到了修正(谢谢你指出这一点)。

票数 0
EN

Stack Overflow用户

发布于 2018-04-05 14:14:09

关于weld-servlet-core库的3.x版本,类的实际位置似乎不同。在研究了库jar文件之后,我发现该类的全名如下所示:

代码语言:javascript
复制
<listener>
    <listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49672950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档