Java中的对象序列化、参数传递与JNDI技术详解
1. 对象序列化与参数传递
1.1 值传递
在使用RMI - IIOP调用方法时,远程方法的所有参数都是通过值传递的。这意味着当客户端调用服务器时,所有参数都会从一台机器复制到另一台机器。这与Java编程语言中对象的传递方式不同,在Java中调用方法并传递对象参数时,是通过引用传递的,即复制对象的引用,而不是实际对象的数据。
值传递存在一个问题:如果要通过网络传递一个包含对其他对象引用的对象,这些引用如何在目标机器上解析呢?因为一台机器上的内存地址在另一台机器上并不对应相同的内存地址,而且被引用的对象可能在目标机器上根本不存在。
1.2 对象序列化
Java引入了对象序列化的概念来解决这个问题。序列化是将Java对象转换为该对象的二进制表示形式(位块)。可以将位块发送到任何地方,例如,可以将对象序列化作为对象的即时文件格式并保存到硬盘。RMI也使用对象序列化通过网络发送参数。
当需要再次使用对象时,必须将位块反序列化回Java对象。要使对象可序列化,对象必须实现 java.lang.Serializable 接口。这是一个标记接口,不定义任何方法,只是标识对象可以被序列化和反序列化。
也可以通过在对象上实现 writeObject() 方法提供自定义序列化,或通过实现 readObject() 方法提供自定义反序列化。这在需要在对象转换为位块之前对数据进行某种压缩,并在位块恢复为对象后进行解压缩时可能很有用。
超级会员免费看
订阅专栏 解锁全文

114

被折叠的 条评论
为什么被折叠?



