首页 文章

如何在WildFly上禁用WELD

提问于
浏览
10

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

异常0:javax.enterprise.inject.UnsatisfiedResolutionException:无法使用限定符[@javax.enterprise.inject.Any(),@ javax.enterprise解析'org.springframework.data.mongodb.core.MongoOperations'的bean . inject.Default()] . at org.springframework.data.mongodb.repository.cdi.MongoRepositoryExtension.createRepositoryBean(MongoRepositoryExtension.java:104)at the sun.reflect org.springframework.data.mongodb.repository.cdi.MongoRepositoryExtension.afterBeanDiscovery(MongoRepositoryExtension.java:79)at sun.reflect at.MativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method .java:606)在org.jboss.weld上的org.jboss.weld.inject.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93)org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266) . event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:125)org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253)org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232)在org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169)

我试过了

<?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>

但它没有解决我的问题 .

3 回答

  • 4

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

  • 14

    有标准方式:

    <?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>
    
  • 14

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

    这是Weld特定的,但它禁用了Weld 's automatic bean scanning for an entire deployment (eg a war file and all the jars inside it). This is handy when you can' t,可以轻松地将 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>
    

    Per-deployment configuration .

    选项2:WildFly中的standalone.xml

    另一个不需要更改应用程序本身的选项是configure the weld subsystem not to treat random jars as CDI libraries . 只需在WildFly的 standalone.xml 中编辑焊接配置,如下所示:

    <subsystem xmlns="urn:jboss:domain:weld:2.0" require-bean-descriptor="true"/>
    

相关问题