2009-10-13 6 views
7

Mam 2 komponenty bean sesji, OrderBean i InventoryBean, które są wdrażane na różnych serwerach blogów.Czy można używać adnotacji @EJB do wstrzykiwania EJB za pośrednictwem różnych serwerów?

The OrderBean musi uzyskać dostęp do InventoryBean, aby sprawdzić, czy dostawa jest wystarczająca.

Obecnie używam wyglądu JNDI do zlokalizowania InventoryBean i działa dobrze.

Teraz zastanawiam się, czy można użyć @EJB do wstrzyknięcia InventoryBean, podając nazwę JNDI i URL w xml lub gdzieś indziej.

Odpowiedz

3

Myślę, że nie jest to możliwe dzięki adnotacjom EJB, ale można skonfigurować foreign JNDI na serwerze WebLogic i odnieść się do zdalnego EJB jako lokalnej nazwy JNDI. Chociaż nigdy tego nie próbowałem, ale myślę, że to powinno zadziałać.

+0

Dzięki, faktycznie próbowałem, że przed i działa dobrze tak jak mówiłeś. – Eric

+0

Ale czy można to zrobić za pomocą adnotacji, czy też muszę wyszukać lokalne jndi, kodując je? –

8

W końcu znalazłem sposób na zrobienie tego.

i. Skonfiguruj obcy JNDI na serwerze WWW i połącz zdalny EJB z lokalną nazwą JNDI.

Na przykład:

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

ii. Skonfiguruj ejb-ref w pliku ejb-jar.xml

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

iii. Dodaj adnotację @EJB w OrderBean

0

Jest to bardzo specyficzne dla AS.

JBoss 7+ sprawia, że ​​możliwe, jeśli:

  1. Definiowanie outbound-socket-binding, security-realm i remote-outbound-connection w pliku autonomicznego (wszystkie odnoszące się do zdalnej instancji JBoss).
  2. Dodaj jboss-ejb-client.xml do folderu META-INF aplikacji w pakiecie, z remoting-ejb-receiver dla każdego połączenia wymaganego przez aplikację.
  3. wstrzyknąć zdalnego EJB z @EJB(lookup = "<jndi_name>")

Daj mi znać, jeśli potrzebne są dalsze szczegóły.

Daj obejrzenia: