Java EE:如何从Web模块访问本地EJB? [英] Java EE: how to access local EJB from web module?

查看:107
本文介绍了Java EE:如何从Web模块访问本地EJB?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个本地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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆