java - EJB 3.1 - 在 EJB 中使用 @EJB - 可能吗?

标签 java jakarta-ee ejb-3.0 java-ee-6 ejb-3.1

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

@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)。

我想做的事情可行吗?

谢谢。

最佳答案

是的,这是可能的。

@LocalBean 注释使 EJB 能够公开无接口(interface)客户端 View ,这样您就不需要定义本地接口(interface)。

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

请选择以上配置选项之一,而不是两者。

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

如果您选择使用@Local 注释,请删除@Local 和@LocalBean 注释并使用接口(interface)名称通过@EJB 注释注入(inject)bean。

关于java - EJB 3.1 - 在 EJB 中使用 @EJB - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262323/

相关文章:

java - 我需要恢复一个 Activity 实例

java - 解析保存 - Android : save multiple rows

java - 无法使用 EasyMock 覆盖 org.openide.nodes.Node 方法调用的函数

java - 如何通过不同的进程同时在两个线程中进行处理?

java - EJB3实例化

java - 回车换行 XML - Java

java - 我应该如何制作自定义类别转换器

java - Spring XML 模式

java - 增加 MDB 实例

java - 服务器启动时的调用方法