我知道Local接口是为同一容器的JVM实例中的客户端设计的,远程接口是为驻留在EJB容器JVM外部的客户端设计的.如果Web应用程序客户端不在同一个.ear中驻留(或打包)但位于同一Java EE服务器上,那该怎么办?
Arj*_*jms 27
@Local只有在同一个应用程序中才能访问经过正式注释的bean.与.ear(或其他.war或其他.jar EJB)分开部署的.war是一个不同的应用程序,即使部署到同一个应用程序服务器实例也是如此.
因此,无法保证 .war中的代码可以调用@Local.ear中定义的EJB bean.
但是,在几乎所有应用程序服务器的实践中,这都可行.
有一个EJB 3.2规范的请求正式支持本地跨应用程序调用:http://java.net/jira/browse/EJB_SPEC-22
本地接口将用于同一应用程序内的通信.它并不一定意味着JVM.
重点是:即使在同一个JVM实例中,在同一台服务器上,两个不同的应用程序也无法使用本地接口进行通信(这意味着本地和无接口视图).
如果您有一个Web组件(WAR)以及位于同一应用程序中的业务组件(EJB-JAR),那么最直观,最直接的解决方案是将它们打包在一个EAR或一个WAR中(从Java EE 6开始) .