Tomcat、焊接 3、CDI 2、焊接终端监听器
Tomcat, WELD 3, CDI 2, WeldTerminalListener
正在尝试使用 CDI 2.0 设置一个 Maven 网络项目,它应该 运行 在 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)
我在 "WeldTerminalListener" 中遇到错误,在 web.xml 中这样声明:
<!-- 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-servlet-core库的版本3.x,好像是class 不同。在浏览库 jar 文件后,我发现 class 的全名如下:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>
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
)。
至于监听器的class,你可以check yourself on GH,但故事是它也被改变了(向JDK 9+中的包冲突问好)。
现在是:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>
焊接文档(适用于 3.0。3.Final)有关于此的错误信息。
我会确保它在下一个版本中得到纠正(感谢您指出这一点)。
正在尝试使用 CDI 2.0 设置一个 Maven 网络项目,它应该 运行 在 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)
我在 "WeldTerminalListener" 中遇到错误,在 web.xml 中这样声明:
<!-- 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-servlet-core库的版本3.x,好像是class 不同。在浏览库 jar 文件后,我发现 class 的全名如下:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>
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
)。
至于监听器的class,你可以check yourself on GH,但故事是它也被改变了(向JDK 9+中的包冲突问好)。 现在是:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>
焊接文档(适用于 3.0。3.Final)有关于此的错误信息。 我会确保它在下一个版本中得到纠正(感谢您指出这一点)。