EJB3本地和远程接口

问题描述 投票:21回答:4

我知道,本地接口是为同一容器的JVM实例中的客户端设计的,而远程接口是为驻留在EJB容器的JVM之外的客户端设计的。不是驻留(或打包)在同一.ear中但驻留在同一Java EE服务器上的Web应用程序客户端如何?

java jvm ejb-3.0
4个回答
27
投票

[[0]官方注释的Bean,只有在相同的应用程序中才可以访问。与.ear(或其他.war或其他.jar EJB)分开部署的.war是不同的应用程序,即使部署到同一应用程序服务器实例。

因此,没有guarantee您的.war中的代码可以调用.ear中定义的@Local EJB bean。

但是,实际上在几乎所有应用程序服务器中,它都可以正常工作。

[要求EJB 3.2规范正式支持本地跨应用程序调用:@Local


5
投票

本地接口将用于同一application中的通信。它不一定表示JVM

重点是:即使在同一JVM实例中,在同一服务器上,两个不同的应用程序不能使用本地接口(这意味着本地和无接口视图)进行通信。

[如果在同一应用程序中同时具有Web组件(WAR)和业务组件(EJB-JAR),则最直观,最直接的解决方案是将它们打包在一个EAR或一个WAR中(因为Java EE 6)。


0
投票

您使用远程接口,但是您使用JNDI进行查找(这就是我的方式),这样您就可以在服务器中找到EJB实例并可以在Web应用程序中使用它。

尽管您仍需要在Web应用程序项目中使用带有EJB接口的jar。

编辑,我同意JB Nizet,为什么要在EAR之外进行战争?


0
投票

可以从应用程序服务器内部的任何位置以及外部,甚至从其他主机在应用程序之间调用远程接口。

因此,假设您需要远程(https://download.oracle.com/otndocs/jcp/ejb-3_2-fr-spec)接口。在EJB 3.1中,可以使用依赖项注入。

© www.soinside.com 2019 - 2024. All rights reserved.