que java jvm ejb-3.0

java - que - Interfaces locales y remotas EJB3



@ejb (4)

Las interfaces locales se utilizarán en la comunicación dentro de la misma aplicación . No necesariamente significa JVM .

El punto es: incluso dentro de la misma instancia de JVM, en el mismo servidor, dos aplicaciones diferentes no pueden comunicarse utilizando interfaces locales (lo que significa vistas locales y sin interfaz).

Si tiene un componente web (WAR) así como un componente empresarial (EJB-JAR) que está en la misma aplicación, la solución más intuitiva y directa es empaquetarlos en un EAR o en un WAR (desde Java EE 6) .

Entendí que la interfaz local está diseñada para clientes en la instancia JVM del mismo contenedor y la interfaz remota está diseñada para clientes que residen fuera de la JVM del contenedor EJB. ¿Qué tal el cliente de aplicaciones web que no reside (o está empaquetado) en el mismo .ear sino que reside en el mismo servidor Java EE?


Las interfaces remotas se pueden llamar a través de aplicaciones, desde cualquier lugar dentro del servidor de aplicaciones, así como desde el exterior, incluso desde otros hosts.

Así que suponga que necesita una interfaz remota ( @Remote ). En EJB 3.1 puede utilizar inyección de dependencia.


Oficialmente solo se puede acceder a los beans anotados @Local si están en la misma aplicación. Un .war implementado por separado de un .ear (u otro .war u otro .jar EJB) es una aplicación diferente, incluso cuando se implementa en la misma instancia del servidor de aplicaciones.

Por lo tanto, no hay garantía de que el código en su .war pueda llamar a los @Local EJB @Local que están definidos en el .ear.

Sin embargo, en la práctica, en casi todos los servidores de aplicaciones esto simplemente funciona.

Hay una solicitud para que la especificación EJB 3.2 admita oficialmente las llamadas locales entre aplicaciones: http://java.net/jira/browse/EJB_SPEC-22


Usted usa las interfaces remotas, pero realiza una búsqueda utilizando JNDI (así es como lo haría), de esta manera encuentra la instancia de EJB en el servidor y puede usarla en su aplicación web.

Aunque todavía necesita un jar con las interfaces EJB en el proyecto de aplicación web.

EDIT y estoy de acuerdo con JB Nizet, ¿por qué querrías la WAR fuera del EAR?