CDI перестает работать, когда используется сварка-сердечник и сварка-сердечник? - PullRequest
1 голос
/ 09 июля 2011

Я играю с Weld-SE. У меня есть проект, который имеет подключаемые модули. С одним модулем сварка работает. Когда другой модуль, который использует weld-servlet-core, помещается в classpath (с его deps), CDI перестает работать, выдавая ошибки типа «Невозможно разрешить зависимость XY» или (после удаления этого @Inject) это:

Exception in thread "main" org.jboss.weld.exceptions.DeploymentException: WELD-001417 Enabled interceptor class <class>org.jboss.weld.environment.se.jpa.JpaTransactionInterceptor</class> in jar:file:/mnt/ssd1/data/.m2/repository/org/jboss/jawabot/JawaBot-core/2.0.0-SNAPSHOT/JawaBot-core-2.0.0-SNAPSHOT.jar!/META-INF/beans.xml@11 is neither annotated @Interceptor nor registered through a portable extension
    at org.jboss.weld.bootstrap.Validator.validateEnabledInterceptorClasses(Validator.java:466)
    ...

Хотя класс имеет @Interceptor (и тот же класс отлично работает с другим модулем).

Когда я отлаживаю WeldBootstrap#startContainer(Environment environment, Deployment deployment), deployment.beanDeploymentArchive.beanClasses содержит перехватчик ("org.jboss.weld.environment.se.jpa.JpaTransactionInterceptor").

Я проверил зависимости и отчет TattleTale, все они выглядят нормально.

Есть идеи, на что мне посмотреть / попробовать дальше?

Проект находится на http://ondrazizka.googlecode.com/svn/trunk/bots/JawaBot/branches/2.0/ Чтобы увидеть ошибку, выполните mvn dependency: copy-dependencies java -cp ... org.jboss.jawabot.JawaBotApp Или просто запустите веб-модуль в NetBeans.

Спасибо, Ондра

Обновление: JIRA: https://issues.jboss.org/browse/WELD-940
Кроме того, я обнаружил, что это может быть вызвано ошибкой в ​​расширении сканирования Weld, <weld:scan>.

1 Ответ

1 голос
/ 13 июля 2011

Это было вызвано использованием расширения сканирования Weld, <weld:scan>:

Элемент <includes> содержал подстановочный знак пакета, который приводил к совпадению классов в обоих «пакетах» (что является термином .jar в терминологии CDI / Weld IIUC).

Я не уверен, что использовал это неправильно или это ошибка.
Смотри JIRA: https://issues.jboss.org/browse/WELD-940

...