尝试使用CDI 2.0设置一个Maven Web项目,该项目应在Tomcat 8.5上运行。所以我必须安装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>
焊接Servlet(无“ -core”)3仅可作为alpha使用。版本2不支持CDI 2.0。
因此,我需要POM中的哪个依赖项才能运行它?
最佳答案
焊接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>
焊接文档(适用于3.0.3.Final)对此有错误的信息。
我将确保它在下一个版本中得到纠正(感谢指出)。
关于tomcat - Tomcat,WELD 3,CDI 2,WeldTerminalListener,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49672950/