2014-11-19 5 views
1

Я пытаюсь использовать stateful ejb из сервлета, но из того, что я понял, я не должен использовать инъекцию @EJB, чтобы сделать это, и вместо этого сделайте поиск.Проблема с stateful ejb на сервлет без вставки @EJB

Проблема заключается в том, до сих пор единственным способом мне удалось добиться этого с помощью этого эту заметку на сервлета:

@EJB(name="LoginRemote", beanInterface = LoginRemote.class) 
LoginRemote loginHandler; 

то поиск:

loginHandler = (LoginRemote) new InitialContext().lookup("java:comp/env/LoginRemote"); 

В противном случае я всегда получаю javax.servlet.ServletException: javax.naming.NameNotFoundException ошибка.

Является ли это приемлемым или следует избегать инъекции @EJB полностью?

Благодаря

+0

возможного дубликат [ Использование сессионных битов состояния с сервлетами] (http://stackoverflow.com/questions/19946348/using-stateful-session-beans-with-servlets) – Gimby

+0

Является ли ваш EJB 'Local' или' Remote '? – Adheep

+0

@Adhep, это удаленный – user3723167

ответ

1

Нет, вы не хотите, чтобы ввести экземпляр в сервлет. Вместо этого, вы можете использовать @EJB аннотацию на самом сервлета класса объявить ссылку без инъекций:

@EJB(name="LoginRemote", beanInterface = LoginRemote.class) 
public class MyServlet { 

Вы можете использовать @EJBs, если вы хотите, чтобы объявить несколько ссылок в том же сервлет.

(Обратите внимание, что при использовании аннотации на поле, как в вашем примере, параметр beanInterface избыточен с типом поля, но это требуется при использовании класса аннотации на уровень класса.)

Смежные вопросы