首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >野蝇应用程序中通过接口注入EJB

野蝇应用程序中通过接口注入EJB
EN

Stack Overflow用户
提问于 2016-11-17 08:39:35
回答 1查看 1.3K关注 0票数 1

我使用的是野蝇10.1.0和JavaEE 7

我有一个界面:

代码语言:javascript
运行
复制
public interface TestEjb {
    String something();
}

而这个Ejb类实现了它:

代码语言:javascript
运行
复制
@LocalBean
@Stateless
public class TestEjbImpl implements TestEjb {

    @Override
    public String something() {
        return "Hello world";
    }
}

当我将它注入到我的@Path注释的jax-rs类时,使用

代码语言:javascript
运行
复制
@Inject
private TestEjb testEjb;

它给出了一个错误:“焊缝-001408: TestEjb类型的未满足的依赖关系,限定符@Default”

但当我注射的时候

代码语言:javascript
运行
复制
@Inject
private TestEjbImpl testEjb;

效果很好。令人惊讶的是,这两种方式在jboss 6.4中都没有问题。但是为什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 08:57:12

首先,您将CDI注入和EJB注入混合在一起。而是在注入EJB时使用@EJB (而不是@Inject)。

@LocalBean有一个无接口视图.因此,您有一个没有视图注释的接口和一个没有接口的视图注释的bean。EJB容器将它理解为一个无接口视图。

最好的方法是用TestEjb视图注释@Local接口,并从TestEjbImpl实现中删除@LocalBean,以便解决方案工作。

接口

代码语言:javascript
运行
复制
@Local
public interface TestEjb {
    String something();
}

EJB

代码语言:javascript
运行
复制
@Stateless
public class TestEjbImpl implements TestEjb {

    @Override
    public String something() {
        return "Hello world";
    }
}

注入时间

代码语言:javascript
运行
复制
@EJB
private TestEjb testEjb;

我希望这能帮到你。

Further reading...

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40650111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档