您的位置:首页 > 编程语言 > Java开发

Java EE几个重要概念理解

2018-01-04 23:32 302 查看

RMI

RMI远程方法调用使远程对象像本地对象一样调用,了解EJB的话,RMI会在本地保留一个远程接口对象的对象-叫做存根(Stub)。

存根可以理解为一个代理,你需要将参数(数个对象)传送给stub对象,通过网络发送到远程的对象。远程的方法对参数进行处理,并返回返回值。

序列化

将参数对象通过网络发送到远程接口时需要将参数对象转换成字节流。因为字节流是线性的,所以不难理解将对象转化为字节流称为对象的序列化

将传递的参数序列化是将参数对象的属性变成字节流,因此参数对象应该是可串行化的,或者称为可序列化的。而参数对象的属性如果要转换成真正的字节也应该是可串行的。

PS:RMI参数对象必须实现java.io.Serializable或java.rmi.Remote


当然参数对象的属性不是都可以串行化的,对外部资源的引用是不可以的。比如(数据库,Socket)。对于实现串行化接口的参数对象,其不可串行化的类应该加修饰符
Transient


对象串行化过程中所有带有修饰符transient的类都会被忽略


串行化对象超类也应该是可串行的,如果不可串行,超类类定义中至少应该有一个默认的无参构造器。

否则java.io.NotSerializableException会出现


RMI和序列化的合作

本地出现RMI(远程调用)会在本地调用存根对象,将对象序列化后变成字节流,字节流经过网络发送到服务器中的反序列化程序(WebLogic etc…),会在服务端恢复参数对象,以后的过程就是执行业务方法返回结果了。

序列化机制的确为RMI调用提供了有力的支持。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: