相同或不同的JVM /服务器中的No-interface-view和@ Local-ejbs?

时间:2016-01-09 19:28:24

标签: java jvm ejb local

我对Ejb-Beans中的no-interface-view和@Local - view之间的区别感到有点困惑。

使用No-Interface-view声明的Bean可以由位于同一JavaEE应用程序中的客户端解决,而实现@Local接口的bean可以由位于同一JVM但可能位于不同JavaEE应用程序中的客户端访问, 对?

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

我们还能说,每台服务器有一个JVM,每个从其main方法执行的java应用程序都独立使用JVM的一个实例吗?

对于noobie问题感到抱歉。

2 个答案:

答案 0 :(得分:2)

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

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

如果您不熟悉术语,最简单的方法是简化和思考JVM" as" java进程"。所以,是的,java -cp ...java -jar ...启动包含单个JVM的单个Java进程,而应用程序服务器进程通常是使用java启动的单个进程,因此它也包含一个JVM 。是的,您还可以说@Local只能从同一个Java进程或相同的JVM(或者通常甚至是相同的Java EE应用程序)调用EJB,因为大多数应用程序都是可移植编写的,不需要跨应用程序本地EJB。

答案 1 :(得分:1)

是的,通常你会有一个JVM运行一个带有一个或多个应用程序的应用程序服务器,@Local接口允许你的应用程序互相使用EJBs

通过调用他们的main()方法运行Java应用程序会创建一个新的JVM来运行该应用程序,但我不知道这与EJBs有什么关系。