Удаленная привязка EJB не отображается в журнале — Websphere Liberty

#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>