有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在WildFly上禁用WELD

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

Exception 0 : javax.enterprise.inject.UnsatisfiedResolutionException: Unable to resolve a bean for 'org.springframework.data.mongodb.core.MongoOperations' with qualifiers [@javax.enterprise.inject.Any(), @javax.enterprise.inject.Default()]. 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) 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) at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266) at org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:125) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232) at 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) 个答案

  1. # 1 楼答案

    选项1:jboss all。战争中的xml

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

    战争另存为WEB-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中的xml

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

    <subsystem xmlns="urn:jboss:domain:weld:2.0" require-bean-descriptor="true"/>
    
  2. # 2 楼答案

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

  3. # 3 楼答案

    有一个标准的方法:

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