是否可以在另一个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初始化的)。
我想要做的事情是可能的吗?
谢谢。
发布于 2010-11-26 04:17:23
是的,这是可能的。
@LocalBean注释使EJB能够公开无接口客户机视图,因此您不需要定义本地接口。
另一方面,@Local注释定义了bean的本地客户端接口。
选择上述配置选项中的一个,而不是两个。
如果选择使用@LocalBean注释,请删除@Local注释,删除implements关键字,并使用@EJB注释注入bean类名称。
如果选择使用@Local注释,请删除@Local和@LocalBean注释,并使用接口名称将带有@EJB注释的bean注入。
发布于 2010-11-24 08:13:45
是的,我正在编写我的一些代码,就是这样的。这可能是关于如何创建EJB的问题。我只使用了注入,而不是jndi查找。
发布于 2014-12-08 01:47:40
如果你使用EJB3.1,你也可以从CDI使用@Inject
https://stackoverflow.com/questions/4262323
复制相似问题