Java 在相同或不同的JVM中没有接口视图和@Local EJB';服务器?

Java 在相同或不同的JVM中没有接口视图和@Local EJB';服务器?,java,jvm,ejb,local,Java,Jvm,Ejb,Local,我对EJBbean中无接口视图和@Local-视图之间的区别有点困惑 声明没有接口视图的bean可以由位于同一JavaEE应用程序中的客户端寻址,而实现@Local接口的bean可以由位于同一JVM中但可能位于单独JavaEE应用程序中的客户端访问,对吗 JVM的确切含义是什么?具有@Local-接口的bean在同一台服务器上,因为通常每个服务器都有一个Java虚拟机 我们还可以说,每台服务器有一个JVM,并且从其主方法执行的每个java应用程序都独立地使用JVM的一个实例吗 对不起,我的问题很

我对EJBbean中无接口视图和
@Local
-视图之间的区别有点困惑

声明没有接口视图的bean可以由位于同一JavaEE应用程序中的客户端寻址,而实现
@Local
接口的bean可以由位于同一JVM中但可能位于单独JavaEE应用程序中的客户端访问,对吗

JVM的确切含义是什么?具有
@Local
-接口的bean在同一台服务器上,因为通常每个服务器都有一个Java虚拟机

我们还可以说,每台服务器有一个JVM,并且从其主方法执行的每个java应用程序都独立地使用JVM的一个实例吗


对不起,我的问题很棘手

是的,通常情况下,您将有一个JVM运行一个应用程序服务器和一个或多个应用程序,并且
@Local
接口将允许您的应用程序相互使用
ejb


通过调用Java应用程序的
main()
方法运行Java应用程序将创建一个新的JVM来运行该应用程序,但我不知道这与
EJB
有什么关系是的,通常您会有一个JVM运行带有一个或多个应用程序的单个应用程序服务器,而
@Local
接口将允许您的应用程序相互使用
ejb

通过调用Java应用程序的
main()
方法运行Java应用程序将创建一个新的JVM来运行该应用程序,但我不知道这与
EJB
有什么关系,无接口视图(
@LocalBean
)和
@Local
都是本地接口,几乎相同。唯一的区别是
@Local
使用一个单独的接口作为代理,而
@LocalBean
使用bean类本身作为代理(EJB容器生成一个覆盖所有业务方法的子类)

EJB规范声明EJB容器只需要支持同一应用程序中的本地接口。应用程序服务器可以实现跨应用程序的相同JVM本地接口(
@LocalBean
@local
),但它们不需要这样做

如果您不熟悉这个术语,最简单的方法是简化“JVM”并将其视为“java过程”。因此,是的,
java-cp…
java-jar…
启动包含单个JVM的单个java进程,而应用程序服务器进程通常是使用
java
启动的单个进程,因此它也包含单个JVM。是的,您还可以说,
@Local
ejb只能从同一个Java进程或同一个JVM(或者通常是同一个javaee应用程序)调用,因为大多数应用程序都是可移植编写的,不需要跨应用程序的本地ejb)。

无接口视图(
@LocalBean
)和
@Local
都是本地接口,几乎相同。唯一的区别是
@Local
使用一个单独的接口作为代理,而
@LocalBean
使用bean类本身作为代理(EJB容器生成一个覆盖所有业务方法的子类)

EJB规范声明EJB容器只需要支持同一应用程序中的本地接口。应用程序服务器可以实现跨应用程序的相同JVM本地接口(
@LocalBean
@local
),但它们不需要这样做


如果您不熟悉这个术语,最简单的方法是简化“JVM”并将其视为“java过程”。因此,是的,
java-cp…
java-jar…
启动包含单个JVM的单个java进程,而应用程序服务器进程通常是使用
java
启动的单个进程,因此它也包含单个JVM。是的,您还可以说,
@Local
ejb只能从同一个Java进程或同一个JVM(或者通常是同一个javaee应用程序)调用,因为大多数应用程序都是可移植编写的,不需要跨应用程序的本地ejb).

这意味着在两个不同的JVM实例中通过主方法调用两个应用程序,不允许我在@Local时使用彼此的EJB?我没有说过,但是为什么要在同一台机器上运行两个EJB容器呢?这意味着,通过在两个不同的JVM实例中调用两个应用程序的主方法,当它们是@Local时,不允许我使用彼此的EJB?我没有这么说,但是为什么要在同一台机器上运行两个EJB容器呢?