我使用的是野蝇10.1.0和JavaEE 7
我有一个界面:
public interface TestEjb {
String something();
}而这个Ejb类实现了它:
@LocalBean
@Stateless
public class TestEjbImpl implements TestEjb {
@Override
public String something() {
return "Hello world";
}
}当我将它注入到我的@Path注释的jax-rs类时,使用
@Inject
private TestEjb testEjb;它给出了一个错误:“焊缝-001408: TestEjb类型的未满足的依赖关系,限定符@Default”
但当我注射的时候
@Inject
private TestEjbImpl testEjb;效果很好。令人惊讶的是,这两种方式在jboss 6.4中都没有问题。但是为什么呢?
发布于 2016-11-17 08:57:12
首先,您将CDI注入和EJB注入混合在一起。而是在注入EJB时使用@EJB (而不是@Inject)。
@LocalBean有一个无接口视图.因此,您有一个没有视图注释的接口和一个没有接口的视图注释的bean。EJB容器将它理解为一个无接口视图。
最好的方法是用TestEjb视图注释@Local接口,并从TestEjbImpl实现中删除@LocalBean,以便解决方案工作。
接口
@Local
public interface TestEjb {
String something();
}EJB
@Stateless
public class TestEjbImpl implements TestEjb {
@Override
public String something() {
return "Hello world";
}
}注入时间
@EJB
private TestEjb testEjb;我希望这能帮到你。
https://stackoverflow.com/questions/40650111
复制相似问题