EJB客户端驻留在哪里,EJB容器驻留在应用程序服务器中

时间:2016-07-28 20:14:07

标签: java-ee ejb-3.0 ejb-3.1 application-server

我是EJB的新手,想要澄清一些疑问。

在应用程序服务器中,我们有 EJB容器 + (servlet和JSP) +其他。

EJB容器具有EJB组件,而EJB组件又具有EJB组件。

我的问题是EJB客户端到底在哪里? 它驻留在同一个应用程序服务器和/或其他应用程序服务器中吗?什么是EJB中的@Local和@Remote。

2 个答案:

答案 0 :(得分:0)

EJB服务的客户端几乎无处不在。客户端可以是同一应用程序中的其他EJB服务或CDI Bean,也可以是同一应用程序服务器上的其他应用程序,甚至是不同计算机和/或JVM上的某些普通Java SE应用程序。 客户端只是使用EJB服务的“模块”。

使用@Local / @Remote,您可以指定会话bean的业务接口。特别是如果要从外部客户端(如不同JVM上的独立Java SE应用程序)使用EJB服务,则必须使用@Remote指定业务接口。

答案 1 :(得分:0)

如果启动服务器实例,则整个服务器将在同一JVM中运行,但可能包含多个不同的应用程序。 所以不同的服务器或不同的JVM意味着相同。

如果你看看WildFly域模式,有点复杂。在这里,您启动一​​个实例,但此实例是控制器,可能会启动1 ... n个服务器实例。

在任何情况下,如果使用@Local接口,客户端和服务器必须部署在同一个实例中(但可以是不同的应用程序)。

如果使用@Remote,它可以是相同或不同的实例,它取决于配置是否有"按值调用"或者"通过引用呼叫"对于参数。 必须为调用配置容器或应用程序,即通过指定连接的外部主机和端口。