2009-10-13 14 views
7

Tengo 2 beans de sesión, OrderBean y InventoryBean que se implementan en diferentes servidores weblogic.¿Es posible utilizar la anotación @EJB para inyectar EJB a través de diferentes servidores?

El OrderBean necesita acceder al InventoryBean para comprobar si el suministro es suficiente.

Actualmente, uso la búsqueda JNDI para ubicar el InventoryBean y funciona bien.

Ahora me pregunto si es posible usar @EJB para inyectar InventoryBean proporcionando el nombre JNDI y la URL en xml o en otro lugar.

Respuesta

3

Creo que no es posible a través de anotaciones EJB, pero puede configurar foreign JNDI en su servidor WebLogic y referirse a su EJB remoto como un nombre JNDI local. Sin embargo, nunca lo intenté, pero creo que debería funcionar.

+0

Gracias, en realidad he intentado antes y trabaja muy bien al igual que usted ha dicho. – Eric

+0

¿Pero es posible por una anotación, o tengo que buscar jndi local codificándolo? –

8

Finalmente encontré una manera de hacer esto.

i. Configure el JNDI foráneo en el servidor weblogic y vincule el EJB remoto a un nombre JNDI local.

Por ejemplo:

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

ii. Configure ejb-ref en ejb-jar.xml

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

iii. Agregue la anotación @EJB en OrderBean

 
@EJB(name = "ejb/InventoryBean") 
private InventoryService inventoryService; 
0

Es muy específico de AS.

JBoss 7+ hace que sea posible si usted:

  1. Definir outbound-socket-binding, security-realm y remote-outbound-connection en el archivo independiente (todo lo referente a la instancia de JBoss a distancia).
  2. Agregue jboss-ejb-client.xml a la carpeta META-INF de su aplicación empaquetada, con remoting-ejb-receiver por cada conexión que necesite la aplicación.
  3. inyectar el EJB remoto con @EJB(lookup = "<jndi_name>")

Avisadme si se necesitan más detalles.

Dale un vistazo a: