首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB 3.1 -在EJB中使用@EJB -这是可能的吗?

EJB 3.1 -在EJB中使用@EJB -这是可能的吗?
EN

Stack Overflow用户
提问于 2010-11-24 08:03:44
回答 3查看 3.5K关注 0票数 4

是否可以在另一个EJB中使用@ EJB?我现在正尝试这样做,但我的EJB最终为空。我将在一个示例中概述我的问题。

代码语言:javascript
复制
@Stateless
@LocalBean
@Local(LoginServiceLocal.class)
public class LoginService implements LoginServiceLocal {    

    public void createLogin(String email, String password) { ... }
}

@Stateless
@LocalBean
@Local(AccountServiceLocal.class)
public class AccountService implements AccountServiceLocal {

    @PersistenceContext(unitName = "accounts")
    private EntityManager accountEntityManager;

    @EJB
    private LoginServiceLocal loginService;

    public void createAccount(Account account, String email, String password) {
        accountEntityManager.persist(account);
        loginService.createLogin(email, password);
    }
}

这种类型的事情应该是可能的吗?我还应该提到我正在使用一个嵌入式容器(通过EJBContainer),并且我正在使用JNDI查找AccountService,但是当我尝试在AccountService中调用loginService.createLogin时,该loginService是空的(不是由@EJB初始化的)。

我想要做的事情是可能的吗?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-26 04:17:23

是的,这是可能的。

@LocalBean注释使EJB能够公开无接口客户机视图,因此您不需要定义本地接口。

另一方面,@Local注释定义了bean的本地客户端接口。

选择上述配置选项中的一个,而不是两个。

如果选择使用@LocalBean注释,请删除@Local注释,删除implements关键字,并使用@EJB注释注入bean类名称。

如果选择使用@Local注释,请删除@Local和@LocalBean注释,并使用接口名称将带有@EJB注释的bean注入。

票数 2
EN

Stack Overflow用户

发布于 2010-11-24 08:13:45

是的,我正在编写我的一些代码,就是这样的。这可能是关于如何创建EJB的问题。我只使用了注入,而不是jndi查找。

票数 1
EN

Stack Overflow用户

发布于 2014-12-08 01:47:40

如果你使用EJB3.1,你也可以从CDI使用@Inject

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

https://stackoverflow.com/questions/4262323

复制
相关文章

相似问题

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