有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java EJB3本地和远程接口

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


共 (4) 个答案

  1. # 1 楼答案

    官方@Local注释的bean只有在它们位于同一应用程序中时才能被访问。A.战争与战争分开部署。ear(或other.war或other.jar EJB)是一个不同的应用程序,即使部署到同一个应用服务器实例上也是如此

    因此,不能保证中的代码。war可以调用@Local中定义的EJB bean。耳朵

    然而,实际上,在几乎所有的应用服务器上,这都是可行的

    有人要求EJB3.2规范正式支持本地跨应用程序调用:https://download.oracle.com/otndocs/jcp/ejb-3_2-fr-spec

  2. # 2 楼答案

    远程接口可以跨应用程序调用,可以从应用程序服务器内的任何地方调用,也可以从外部调用,甚至可以从其他主机调用

    所以假设您需要远程(@Remote)接口。在EJB3.1中,可以使用依赖注入

  3. # 3 楼答案

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

    尽管在web应用程序项目中仍然需要一个带有EJB接口的jar

    编辑我同意JB Nizet的观点,你为什么要把战争排除在外

  4. # 4 楼答案

    本地接口将用于同一应用程序中的通信。它不一定意味着JVM

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

    如果您在同一个应用程序中有一个web组件(WAR)和一个业务组件(EJB-JAR),那么最直观、最直接的解决方案就是将它们打包到一个EAR或一个WAR中(从JavaEE6开始)