有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jakarta ee Java ee:如何从web模块访问本地EJB?

我已经创建了一个本地EJB,我想从同一个VM中的web模块访问它。我的代码如下所示:

@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,我不需要进行查找,我只需要进行如下注入:

@EJB
private UserBeanLocal userBean;

public UsuarioManagedBean() {

}

public List<User> getUsers() {
    users = this.userBean.listUsers();
    return users;
}

但是如果我尝试这个,我会得到一个空的异常。用户bean。 建议我使用JBoss的人,我正在使用glassfish。我做错什么了吗


共 (2) 个答案

  1. # 1 楼答案

    @Lucia看起来像是一个POJO@卡尔是对的。不能将ejb注入pojo。 如果您真的想注入POJO,请考虑使用CDI。

    使用CDI,您的代码将如下所示 @Inject private UserBeanLocal userBean;

    请发布更多详细信息,如jvm版本、Glassfish版本等

  2. # 2 楼答案

    @EJB注释仅适用于应用程序服务器控制的类,如servlet、MDB和其他EJB。 我猜UsuarioManagedBean是一个pojo,因此是NPE,因为资源从未被注入