Аннотации (@EJB, @Resource, ) в службе RESTful

Я пытаюсь внедрить EJB в свою службу RESTful (RESTEasy) через аннотации.

открытый класс MyServelet реализует MyServeletInterface {

...

@EJB

MyBean mybean;

...

}

К сожалению, нет компиляции или ошибки AS, переменная mybean просто нулевая, и я получаю NullPointerException, когда пытаюсь ее использовать.

Что я делаю неправильно?

Вот некоторая дополнительная информация о моей архитектуре:

  • JBoss 4.2.2.GA
  • Версия Java: 1.5.0_17
  • локальный проект MDB
  • удаленный EJB-проект
  • Проект WAR со службой RESTful, которая использует удаленный EJB и отправляет сообщения в локальный проект MDB.

Заранее спасибо!

бр Доминик

p.s: все работает нормально, когда я использую обычный контекстный поиск.


person Community    schedule 19.03.2010    source источник


Ответы (4)


У меня была похожая проблема (хотя и без @Remote beans). Как это сработало у меня — пример приложения здесь: https://github.com/kubamarchwicki/rest-app/ (это работает: https://github.com/kubamarchwicki/rest-app/blob/master/service-webapp/src/main/webapp/WEB-INF/web.xml#L9 )

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

Всего несколько центов за старую дискуссию ;-)

person Jakub Marchwicki    schedule 15.02.2011

Это не совсем моя сильная сторона, так что, возможно, я далеко... но можете ли вы делать вещи EJB в WAR? У меня сложилось впечатление, что вам нужно работать с EJB в EAR.

person PaulP1975    schedule 19.03.2010
comment
дох... извините... я должен читать внимательнее. я только что заметил удаленный EJB-проект... мои извинения. - person PaulP1975; 19.03.2010

JBoss 4.2.2.GA не является полностью совместимым сервером Java EE 5, он не поддерживает внедрение ссылок EJB в сервлеты или клиенты приложений, только на уровне EJB. Используйте для этого JBoss 5 (или выполните поиск).

person Pascal Thivent    schedule 20.03.2010
comment
Хорошо, я попробую JBoss 5. Я уже выполняю поиск в качестве обходного пути. Спасибо! - person ; 22.03.2010

JBoss 4.2.2.GA поддерживает только Servlet 2.4. В Servlet 2.4 нет поддержки DI. Следовательно, вы всегда получаете значение null для переменной myBean. Как было предложено, перейдите на JBoss 5.0, который поддерживает Servlet 2.5, который использует функции Java 5, такие как аннотации.

person navr    schedule 23.03.2010