Поиск удаленных объектов EJB

Для приложений, которые ищут или вызывают удаленные объекты EJB, необходимо обеспечить доступ к удаленным объектам EJB из облака или переместить все связанные объекты EJB в облако.

В коде Java аннотации javax.ejb.EJB с элементом lookup, в котором указано пространство имен java:global или corbaname:, являются признаком применения удаленного объекта EJB. Если объект EJB, указанный в поиске, находится в другом приложении, то рекомендуется перенести это приложение в облако вместе с данным приложением.

  @EJB(lookup="java:global/myApp/myModule/MyBeanComponent")
		

Для файлов описания элемент <ejb-ref> в файле application.xml, ejb-jar.xml или web.xml с элементом <home> или <remote> тоже является признаком применения удаленного объекта EJB.

  <ejb-ref>
	<ejb-ref-name>CartHomeRemote</ejb-ref-name>
	<ejb-ref-type>Сеанс</ejb-ref-type>
	<home>com.ibm.ejbs.CartHomeRemote</home>
	<remote>com.ibm.ejbs.CartRemote</remote>
  </ejb-ref>

Это правило проверяется один раз для каждого проекта Eclipse или архива Java.

Как исправить

Если приложение может напрямую обратиться к удаленному провайдеру EJB, то дополнительные действия не требуются.

В противном случае одно из решений - переместить в облако приложения с удаленными объектами EJB во время переноса данного приложения. Также необходимо проверить связь этих приложений на наличие неполадок. Другое решение - использовать туннель VPN, например IBM Cloud Secure Gateway, для создания защищенного соединения для поиска существующего удаленного провайдера EJB в среде заказчика. Более подробные инструкции по настройке безопасного соединения см. в разделе Настройка VPN. Для поиска объектов EJB укажите локальное дерево JNDI в качестве целевого узла в параметрах защищенного клиента. Используйте хост и порт, возвращенные из конфигурации для защищенного соединения с облаком, в одном из следующих форматов:

Укажите URL провайдера в свойствах InitialContext или в свойствах JNDI облачные хост и порт.

При настройке защищенного соединения для обращения к удаленным объектам EJB в среде заказчика создайте и установите сервлет для туннелирования по HTTP на локальном сервере приложений и включите туннелирование в параметрах ORB на стороне клиента. См. раздел Включение туннелирования HTTP. Укажите сервлет туннелирования по HTTP в параметрах защищенного клиента. Используйте хост и порт, возвращенные из конфигурации защищенного соединения с облаком, в следующем формате:

Этот прием применим, когда клиент EJB перемещается в облако, а объект EJB остается в среде заказчика и наоборот.

Примечание: приложения Liberty for Java, в которых используются объекты EJB, можно развертывать в среде IBM Cloud Instant; однако удаленные объекты EJB не будут доступны удаленно по протоколу CORBA/IIOP из-за ограничений на порты в среде IBM Cloud. Дополнительная информация о Liberty for Java on IBM Cloud приведена в разделе Функции Liberty, поддерживаемые в IBM Cloud.