Java EE: как получить доступ к локальному EJB из веб-модуля? - PullRequest
2 голосов
/ 27 июня 2011

Я создал локальный EJB, к которому я хочу получить доступ из веб-модуля в той же виртуальной машине.Мой код выглядит так:

@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;
}

И это прекрасно работает.Однако кто-то сказал мне, что мне не нужно искать, если я работаю с локальным бином, мне нужно только сделать инъекцию, подобную этой:

@EJB
private UserBeanLocal userBean;

public UsuarioManagedBean() {

}

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

Но если я попробую это, яполучить нулевое исключение на this.userBean.Человек, который посоветовал мне, работает с JBoss, а я использую Glassfish.Я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 27 июня 2011

@ Люсия выглядит как UsuarioManagedBean - POJO. @ Кал прав. Вы не можете ввести EJB в Pojo. Если вы действительно хотите ввести в pojo, подумайте об использовании CDI.

При использовании CDI ваш код будет выглядеть так, как показано ниже @Inject private UserBeanLocal userBean;

Пожалуйста, опубликуйте более подробную информацию, такую ​​как версия jvm, версия Glassfish и т. Д.

1 голос
/ 27 июня 2011

Аннотация @EJB работает только с управляемыми сервером приложений классами, такими как сервлеты, mdbs, другие ejbs. Я предполагаю, что UsuarioManagedBean является pojo и, следовательно, NPE, потому что ресурс никогда не вводится.

...