学习EJB需要对JNDI和RMI方面知识有一定的了解。
JNDI为EJB提供命名和目录服务,实现不同目录位置的Bean的唯一标识。
RMI为EJB提供远程访问能力,实现Bean的远程调用功能(实际上是RMI和CORBA的结合RMI-IIOP)
在介绍Bean的工作流程之前,先熟悉一下RMI的工作流程
RMI设计的目标:实现运行在不同JVM中Java对象的调用
-
客户端通过JNDI服务获取Bean对象的接口,称为桩(stub)
-
一般情况下Bean对象并不希望被直接操控,比如针对不同客户端暴露不同接口,所以在JVM2上也提供一个对外接口,称为骨架(skeleton),RMI底层代码实现桩和骨架之间的Socket通信。
-
骨架针对桩的调用,执行Bean中相应的方法
-
Bean对象将执行结构返回给骨架
-
骨架将执行结构通过RMI的Socket通信,将执行结构返回到JVM1中
-
JVM1中的桩接收返回结果传递给客户端。
EJB 中