Как отключить WELD на WildFly

Как полностью отключить WELD на WildFly. Мне это не нужно, потому что я использую другую структуру DI.

Исключение 0: javax.enterprise.inject.UnsatisfiedResolutionException: невозможно разрешить bean-компонент для 'org.springframework.data.mongodb.core.MongoOperations' с квалификаторами [@javax.enterprise.inject.Any(), @javax.enterprise.inject.По умолчанию()]. в org.springframework.data.mongodb.repository.cdi.MongoRepositoryExtension.createRepositoryBean(MongoRepositoryExtension.java:104) в org.springframework.data.mongodb.repository.cdi.MongoRepositoryExtension..NativeMethodAccessorImpl.invoke0(нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegavaMetho.rej.rej.rej.fj.java:606) по адресу org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93) по адресу org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMsshoj.jj.jj.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:125) в org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253) в 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 ответа

Решение

Попробуйте удалить или закомментировать org.jboss.as.weld расширение в списке расширений в начале $JBOSS_HOME/standalone/configuration/standalone.xml, Вы также можете удалить <subsystem xmlns="urn:jboss:domain:weld:1.0"/> от <profile>, Это должно привести к отключению сварки для всех приложений, развернутых на сервере.

Есть стандартный способ:

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

Вариант 1: jboss-all.xml на войне

Это зависит от Weld, но отключает автоматическое сканирование bean-компонентов Weld для всего развертывания (например, файла войны и всех 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: standalone.xml в WildFly

Другим вариантом, который не требует изменения самого приложения, является настройка подсистемы сварки, чтобы она не обрабатывала случайные банки как библиотеки CDI. Просто отредактируйте конфигурацию для сварки в WildFly's standalone.xml выглядеть так:

<subsystem xmlns="urn:jboss:domain:weld:2.0" require-bean-descriptor="true"/>
Другие вопросы по тегам