WELD-001408注入实现接口的EJB时的不满意依赖关系
这是情况。WELD-001408注入实现接口的EJB时的不满意依赖关系
我已经得到了以下接口:
public interface Parent { }
public interface ChildOne extends Parent { }
public interface ChildTwo extends Parent { }
和2的EJB:
@Stateless
public class FirstBean implements ChildOne { }
@Stateless
public class SecondBean implements ChildTwo { }
而且也是这个CDI豆:
@Named
@SessionScoped
public class TestController implements Serializable {
@Inject
private FirstBean firstBean;
@Inject
private SecondBean secondBean;
}
在尝试部署此在Glassfish 3.1上我得到以下异常:
Exception while loading the app : WELD-001408 Unsatisfied dependencies for type [FirstBean]
with qualifiers [@Default] at injection point [[field] @Inject private com.test.controllers.TestController.firstBean]
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [FirstBean]
with qualifiers [@Default] at injection point [[field] @Inject private com.test.controllers.TestController.firstBean]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:305)
当两个EJB实现Parent
接口时,异常都是相同的。
另外,我尝试添加修饰符,但这并没有改变任何东西。
您是否试过使用@EJB注释而不是CDI @inject注释?
E.g.
@Named
@SessionScoped
public class TestController implements Serializable {
@EJB
private FirstBean firstBean;
@EJB
private SecondBean secondBean;
}
晚总比不来好:
与@LocalBean
对我的作品与JBoss AS 7.1.1注解SLSB的方法,另外。我不喜欢创造没有附加价值的界面。
使用你的例子:
@Stateless
@LocalBean
public class FirstBean implements ChildOne { }
@Stateless
@LocalBean
public class SecondBean implements ChildTwo { }
@atamanroman ,你知道这种方法是否便携?由于'@ LocalBean'的定义是“指定**会话** bean公开一个无界面视图”,并且因为它不是“会话”bean,所以它可以在任何地方工作,这是正确的做法吗? – 2012-11-22 15:59:45
@AnthonyO。无状态会话bean和有状态会话bean都是会话bean。所以是的,这与标准要求完全相同。 – atamanroman 2012-11-22 16:21:06
它也适用于JBoss 6.1.0 – Ste 2014-01-10 15:21:29
谢谢!真的很好的解释!我已经碰到了这个异常:“无法将ejbRef转换为ejb ...”,我只是不知道这是一个已知的问题。 – jFrenetic 2012-01-28 10:22:59
我再次检查过它。按照您的建议,我尝试通过接口引用来注入这些EJB。而且我在部署过程中仍然会收到这个'Unsatisfied dependencies ...'异常。我甚至用@Local注解了接口。它仍然不起作用。 – jFrenetic 2012-01-28 12:21:39
昨天我试了一下,它为我工作,而且它有一定的意义。无论如何,当我回家时我会再试一次。 – 2012-01-28 12:43:05