У меня есть проект с некоторыми веб-артефактами (.war), и у меня возникают проблемы с Inject simple POJO. Следующий код представляет собой простейший рабочий случай:CDI Injection поднимает «WELD-001408» для проекта с несколькими модулями
.war (WAR1)
public class MyManagedBean {
@Inject
private MyPojo myPojo;
}
POJO в .war (WAR1)
public class MyPojo {
public void doSomething() {}
}
Проблема возникает, когда я добавить один больше веб-артефакта (.war -> WAR2) с тем же пакетом POJO (MyPojo). Семантически я хочу, чтобы POJO в каждом сетевом артефакте, а не в внешнем архиве (.jar). В основном новейший добавленный компонент (WAR2) идентичен WAR1, т. Е. Он имитирует, как если бы он существовал многомодульным проектом. Во время выполнения контейнер вызывает следующее сообщение об ошибке при попытке использовать модуль:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [MyPojo] with qualifiers [@Default] at injection point [[field] @Inject private com.projectx.MyManagedBean.myPojo]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:270) [:6.1.0.Final]
at org.jboss.weld.bootstrap.Validator.validateInjectionTarget(Validator.java:299) [:6.1.0.Final]
at org.jboss.weld.manager.InjectionTargetValidator.addInjectionTarget(InjectionTargetValidator.java:34) [:6.1.0.Final]
at org.jboss.weld.manager.BeanManagerImpl.createInjectionTarget(BeanManagerImpl.java:1055) [:6.1.0.Final]
at org.jboss.weld.manager.BeanManagerImpl.fireProcessInjectionTarget(BeanManagerImpl.java:1249) [:6.1.0.Final]
at org.jboss.weld.integration.injection.Jsr299SimpleNonContextualInjector.inject(Jsr299SimpleNonContextualInjector.java:66) [:6.1.0.Final]
at org.jboss.injection.manager.core.DefaultInjectionContext.proceed(DefaultInjectionContext.java:58) [:1.0.0-alpha-7]
at org.jboss.injection.manager.core.DefaultInjectionManager.inject(DefaultInjectionManager.java:58) [:1.0.0-alpha-7]
at org.jboss.injection.manager.core.DefaultInjectionManager.inject(DefaultInjectionManager.java:64) [:1.0.0-alpha-7]
at org.jboss.web.tomcat.service.TomcatInjectionContainer.processInjectors(TomcatInjectionContainer.java:410) [:6.1.0.Final]
at org.jboss.web.jsf.integration.injection.JBossDelegatingInjectionProvider.inject(JBossDelegatingInjectionProvider.java:77) [:1.0.3]
... 66 more
Некоторые сценарии детали:
- Если удалить war2, инъекции сделаны WAR1 начинает работать.
- Оба артефакта (WAR1 и WAR2) имеют одинаковые POJO и beans.xml (/ WEB-INF).
Есть ли какой-либо момент, я не хватает? Все, что мне нужно, это возможность ввести класс, например, «* .Helper». Как я знаю, CDI позволяет вводить даже примитивные типы.
- JDK 1.7
- JBoss 6.1.0
- Weld 1.1.Beta2
Какие зависимости не удовлетворяются? –
@RobertHarvey это атрибут «myPojo» в «MyManagedBean». – axcdnt
Развертываете ли вы свою войну прямо на сервере или они упакованы в EAR? –