EJB使用了Java RMI(Remote Method Invocation,远程方法),从而使远程客户可以访问你的bean。
◆ 这里的远程客户是指在另外一个JVM(也称为一个不同的堆)中运行的对象。
◆ 远程对象一直待在它自己的堆里,客户调用的是这个远程对象的代理的方法,这个代理称为桩(stub)。
◆ 桩对象处理与远程对象通信的所有底层网络细节。
◆ 客户想调用一个远程对象上的方法时,实际上会在桩上调用这个方法。桩与客户在同一个堆中。
◆ 对客户来说,远程方法调用和本地方法调用是一样的,只不过远程方法可能抛出一个 RemoteException异常(这是一个受查异常)。
◆ 桩把方法参数包装起来,并把调用的有关信息发送给服务器上的一个骨架。骨架对象本身是可选的,不过服务器上必须有“人”来做骨架的工作。我们不关心是谁(或者是什么)具体做骨架的工作。
◆ 参数和返回值必须是下面的某一种类型:基本类型、Serializable对象、基本类型或 Serializable对象组成的一个数组或集合,或者是一个Remote对象。如果值不在以上范围内,就会出现一个运行时异常。
◆ 如果把一个对象作为参数或返回值进行传递,这个对象会按串行化副本发送,然后在远程对象的本地堆上逆串行化。
◆ 如果把一个远程对象作为参数或返回值进行传递,实际传递的是这个对象的桩。
EJB和RMI
最新推荐文章于 2020-10-27 11:44:07 发布