10

如何在 WildFly 上完全禁用 WELD。我不需要它,因为我使用了另一个 DI 框架。

异常 0:javax.enterprise.inject.UnsatisfiedResolutionException:无法使用限定符 [@javax.enterprise.inject.Any()、@javax.enterprise.inject 解析 'org.springframework.data.mongodb.core.MongoOperations' 的 bean 。默认()]。at org.springframework.data.mongodb.repository.cdi.MongoRepositoryExtension.createRepositoryBean(MongoRepositoryExtension.java:104) at org.springframework.data.mongodb.repository.cdi.MongoRepositoryExtension.afterBeanDiscovery(MongoRepositoryExtension.java:79) at sun.reflect .NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method .java:606) 在 org.jboss.weld。

我试过了

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:weld="http://jboss.org/schema/weld/beans"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    http://java.sun.com/xml/ns/javaee/beans_1_0.xsd
                       http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd
http://jboss.org/schema/weld/beans ">

<weld:scan>
    <weld:exclude name="com.google.**"/>
    <weld:exclude name="org.springframework.data.mongodb.**"/>
</weld:scan>

但这并没有解决我的问题。

4

3 回答 3

17

有标准的方法:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                       http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
   version="1.1" bean-discovery-mode="none">
</beans>
于 2014-02-13T14:30:21.253 回答
16

选项1:战争中的jboss-all.xml

这是特定于 Weld 的,但它会禁用 Weld 对整个部署的自动 bean 扫描(例如,war 文件和其中的所有 jar)。当您无法轻松添加beans.xml到第三方 jar(例如 jboss-seam-resteasy.jar)时,这很方便。

除了WEB-INF/jboss-all.xml战争,META-INF/jboss-all.xml否则:

<jboss xmlns="urn:jboss:1.0">
    <weld xmlns="urn:jboss:weld:1.0" require-bean-descriptor="true"/>
</jboss>

请参阅每次部署配置

选项 2:WildFly 中的standalone.xml

另一个不需要更改应用程序本身的选项是将焊接子系统配置为不将随机 jar 视为 CDI 库。只需编辑 WildFly 中的焊接配置,standalone.xml如下所示:

<subsystem xmlns="urn:jboss:domain:weld:2.0" require-bean-descriptor="true"/>
于 2014-06-05T23:43:37.760 回答
5

org.jboss.as.weld尝试在.开头的扩展列表中删除或注释掉扩展$JBOSS_HOME/standalone/configuration/standalone.xml。您可能还想<subsystem xmlns="urn:jboss:domain:weld:1.0"/><profile>. 这应该会导致对服务器上部署的所有应用程序禁用 Weld。

于 2014-02-13T14:22:33.940 回答