我对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问题感到抱歉。
答案 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
有什么关系。