Java远程方法调用与分布式系统技术解析
1. 远程方法调用(RMI)概述
远程方法调用(RMI)是Java平台用于远程过程调用(RPC)的标准。远程过程调用在概念上与程序内的普通过程调用相同,不同之处在于调用可以通过网络在两个独立进程之间进行。
1.1 RMI核心原理
在Java中,编写客户端/服务器程序相对简单。调用对象的方法时,甚至可能不知道该对象位于远程机器上,方法调用的代码与普通本地方法调用并无区别。在Java EE中,通常需要从命名服务中查找对象实例。获取对象引用后,可能是本地引用或远程引用,但代码不变,这也是Java成为强大服务器语言的原因之一,RMI等技术的许多复杂细节已被抽象化。
不过,开发者不能完全忽略对象实例是远程还是本地的。远程对象存在一些设计权衡,因为方法调用通过网络进行,受网络可靠性和速度的限制。
1.2 调用远程对象方法的步骤
在RPC中,所有方法调用必须转换为可通过网络传输并能被远程进程理解的格式。调用远程对象的方法主要有以下三个步骤:
1. 获取远程对象的引用 :必须在远程服务器上查找远程对象。
2. 参数的编组和解组 :调用远程引用的方法时,参数必须编组为可通过网络发送的字节流。在服务器端,这些参数必须从字节流解组为原始值,然后传递给相应的方法。
3. 通过公共协议传输数据 :必须定义一个协议来传输和传递这些方法调用和返回结果。需要参数的标准格式,以及告知服务器要调用哪个对象上的哪个方法的标准。
为了使远程调用看起来