2016-07-28 98 views
0

我是EJB新手,想要澄清一些疑问。EJB客户端驻留在哪里,EJB容器驻留在应用服务器

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

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

我的问题是EJB客户端的确切位置? 它驻留在相同的应用程序服务器和/或其他应用程序服务器中吗?什么是EJB中的@Local和@Remote。

回答

0

您的EJB服务的客户端可能几乎到处都是。客户端可以是同一应用程序中的其他EJB服务或CDI Beans,也可以是同一应用程序服务器上的其他应用程序中的其他EJB服务或CDI Beans,也可以是其他不同机器和/或JVM上的普通Java SE应用程序。 客户端只是使用EJB服务的“模块”。

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

+0

是不同的JVM意味着不同的应用程序服务器?以及您在同一应用程序服务器上的其他应用程序的含义。例如,您可以告诉我哪些其他应用程序存在。 –

+0

你知道JVM是什么吗? (https://en.wikipedia.org/wiki/Java_virtual_machine)..并且Java应用程序服务器能够托管多个应用程序。您可以从应用程序服务器上托管的其他应用程序中的一个应用程序中使用EJB服务。 – stg

0

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

有点复杂的是,如果你看看WildFly域模式。在这里你开始一个实例,但是这个实例是控制器,并且可能启动1 ... n个服务器实例。

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

如果您使用@Remote,它可以是相同的或不同的实例,并且取决于配置您是否具有“通过值调用”或“通过引用调用”参数。 容器或您的应用程序必须已经配置用于调用,即通过指定连接的外部主机和端口。