Java EE:如何从Web模块访问本地EJB? [英] Java EE: how to access local EJB from web module?
问题描述
我创建了一个本地EJB,我想从同一个VM中的Web模块访问。我的代码如下所示:
I have created a local EJB that I want to access from a web module in the same VM. My code looks like this:
@EJB
private UserBeanLocal userBean;
public UsuarioManagedBean() {
InitialContext c = new InitialContext();
userBean = (UserBeanLocal) c.lookup("java:global/UsersApp/Users-ejb/UserBean!biz.users.beans.UserBeanLocal");
}
public List<User> getUsers() {
users = this.userBean.listUsers();
return users;
}
这个工作正常。然而,有人告诉我,如果我正在使用本地bean,我不需要进行查找,我只需要进行如下注入:
And this works fine. However, somebody told me that I don't need to do a lookup if I'm working with a local bean, I only need to make an injection like this:
@EJB
private UserBeanLocal userBean;
public UsuarioManagedBean() {
}
public List<User> getUsers() {
users = this.userBean.listUsers();
return users;
}
但是如果我尝试这个,我会在this.userBean上得到一个空的异常。
建议我使用JBoss并且使用glassfish。我做错了什么?
But if I try this I get a null exception on this.userBean. The person who advised me works with JBoss and I'm using glassfish. Am I doing something wrong?
推荐答案
@EJB注释仅适用于应用程序服务器控制的类,如servlets,mdbs,其他ejbs 。
我猜测UsuarioManagedBean是一个pojo,因此NPE是因为资源永远不会被注入。
The @EJB annotation only works with application-server controlled classes like servlets, mdbs, other ejbs. I'm guessing that UsuarioManagedBean is a pojo and hence the NPE because the resource never gets injected.
这篇关于Java EE:如何从Web模块访问本地EJB?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!