У меня JAR с EJB 3.1, который мне нужно использовать в WAR. И JAR, и WAR развертываются отдельно на одном JBoss (AS 7.1). Когда я впрыснуть EJB в одном из бобов CDI в WAR я получил эту ошибку:WELD-001408: try @Inject EJB от JAR до WAR
16:45:19,003 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."TEST_WEB.war".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."TEST_WEB.war".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [TestSessionEJBLocal] with qualifiers [@Default] at injection point [[field] @Inject cz.pfreiberg.test.view.portlet.ViewPortlet.testBean]
at org.jboss.as.weld.services.WeldService.start(WeldService.java:83)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_79]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_79]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_79]
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [TestSessionEJBLocal] with qualifiers [@Default] at injection point [[field] @Inject cz.pfreiberg.test.view.portlet.ViewPortlet.testBean]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:244)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127)
at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:346)
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:331)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83)
at org.jboss.as.weld.services.WeldService.start(WeldService.java:76)
Из моей текущей точки зрения @Inject не видит EJB, но если я использую ручной JNDI поиск (с WAR), я могу получить экземпляр этого компонента. Можно ли добавить EJB из другого JAR с помощью аннотации @Inject?
класса в WAR (CDI Bean), который @Inject EJB из ЕАО: класс
@Model
public class ViewPortlet implements Serializable {
@Inject
TestSessionEJBLocal testBean;
}
EJB в JAR, который я пытаюсь @Inject с локальным и удаленным интерфейсом:
@Stateless
public class TestSessionEJBBean implements TestSessionEJB, TestSessionEJBLocal
Спасибо за любые идеи.
У вас есть beans.xml как в JAR, так и в WAR? – jpkrohling
Да, у меня (один в META-INF для JAR, один в WEB-INF для WAR). Согласно спецификации, это даже необязательно. –