Можно ли использовать аннотацию @EJB для внедрения EJB через разные серверы? - PullRequest
8 голосов
/ 13 октября 2009

У меня есть 2 сессионных компонента, OrderBean и InventoryBean, которые развернуты на разных серверах weblogic.

OrderBean должен получить доступ к InventoryBean, чтобы проверить, достаточен ли запас.

В настоящее время я использую JNDI для поиска InventoryBean, и он работает нормально.

Теперь мне интересно, можно ли использовать @EJB для внедрения InventoryBean, указав имя JNDI и URL-адрес в xml или где-то еще.

Ответы [ 3 ]

8 голосов
/ 14 октября 2009

Наконец-то я нашел способ сделать это.

я. Настройте внешний JNDI на сервере weblogic и свяжите удаленный EJB с локальным именем JNDI.

Например:

Local JNDI:
InventoryBean#com.pkg.InventoryBean (MAPPEDNAME#FULLNAME)
link to
Remote JNDI:
ServiceBean#com.pkg.InventoryBean 

II. Настройте ejb-ref в ejb-jar.xml

ejb-ref-name -> ejb/InventoryBean
remote -> com.pkg.InventoryService
mapped-name -> InventoryBean

III. Добавьте аннотацию @EJB в OrderBean

@EJB(name = "ejb/InventoryBean")
private InventoryService inventoryService;
3 голосов
/ 13 октября 2009

Я думаю, что это невозможно с помощью аннотаций EJB, но вы можете настроить внешний JNDI на своем сервере WebLogic и ссылаться на свой удаленный EJB как локальное имя JNDI. Хотя я никогда не пробовал это, но я думаю, что это должно работать.

0 голосов
/ 12 мая 2016

Это очень специфично для AS.

JBoss 7+ делает это возможным, если вы:

  1. Определите outbound-socket-binding, security-realm и remote-outbound-connection в отдельном файле (все относятся к удаленному экземпляру JBoss).
  2. Добавьте jboss-ejb-client.xml в папку META-INF вашего упакованного приложения с remoting-ejb-receiver для каждого соединения, необходимого приложению.
  3. Введите удаленный EJB с помощью @EJB(lookup = "<jndi_name>")

Дайте мне знать, если потребуется дополнительная информация.

Посмотрите на:

...