#websphere #websphere-liberty #ejb-3.2
#websphere #websphere-liberty #ejb-3.2
Вопрос:
Я пытаюсь вызвать удаленный EJB на сервере профилей Liberty, следуя примеру Redbook (IBM WebSphere Application Server Liberty Profile Guide for Developers, 5.2.3 Разработка приложений с использованием удаленного EJB).
Все компилируется и развертывается без проблем, но во время выполнения выдает это сообщение об ошибке:
Error 404: javax.servlet.UnavailableException: SRVE0319E: For the [com.ibm.itso.ejbRemote.HelloRemoteServlet] servlet, com.ibm.itso.ejbRemote.HelloRemoteServlet servlet class was found, but a resource injection failure has occurred. CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/com.ibm.itso.ejbRemote.HelloRemoteServlet/helloRemoteBean reference. The exception message was: CWNEN1003E: The server was unable to find the java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote binding with the com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote type for the java:comp/env/com.ibm.itso.ejbRemote.HelloRemoteServlet/helloRemoteBean reference.
Что может быть не так? Локальный пример EJB работает просто отлично.
Достаточно ли указать удаленный EJB только в клиентском коде или он должен быть где-то еще (файл свойств или server.xml )?
@EJB(lookup="java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote")
private HelloRemoteEJBRemote helloRemoteBean;
Привязкой является только интерфейс с аннотацией @Local, и она показана в журнале. Интерфейс с аннотацией @Remote не привязывается и не отображается в журнале.
В чем может быть ошибка?
Комментарии:
1. Есть ли у вас доступ к websphere admin console? если да, можете ли вы проверить правильность привязок EJB в приложениях > Типы приложений> WebSphere enterprise applications > имя_приложения > Ссылки на EJB в административной консоли
2. В Websphere Liberty таких опций нет
Ответ №1:
Действительно, существует некоторая дополнительная конфигурация из этой процедуры, в конце указано настроить ibm -*-bnd.xml из вашего приложения:
<ejb-ref name="helloRemoteBean" binding-name="java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote"/>
Ответ №2:
Если @Remote
интерфейс не привязывается, то server.xml либо не включает в себя ejbRemote-3.2
функцию, либо отсутствует конфигурация для ORB (т. Е. функция ejbRemote не запустится, если ORB запускается неправильно. Например, соответствует ли ваш server.xml содержит по крайней мере что-то вроде следующего:
<server>
<featureManager>
<feature>ejbRemote-3.2</feature>
</featureManager>
<iiopEndpoint id="defaultIiopEndpoint" iiopPort="2809" iiopsPort="2810"/>
</server>