@[JAVA RMI技术]
简单实现Java RMI技术
RMI 技术简介
Remote Method Invoke (远程方法调用):在网络传输中,存在大量的客户向服务器发送请求,这个请求到了服务器端,实质是要执行一些服务器端的方法,并且得到一个"响应"。
RMI技术实现分析
对RMI得到分析主要可以从客户端和服务器端两个部分出发:
客户端执行分析:①客户端首先需要连接RMI服务器; ②向服务器发送要执行的方法的名称、参数类型以及参数值; ③等待服务器返回执行结果,即"响应"。
客户端使用代理机制,相关方啊的执行实际是通过代理执行,在具体被执行的方法中,实际的操作是向服务器发送"请求",而服务器端接收到"请求"后执行相关方法并返回"响应"。
服务器端执行分析:①服务器端首先必须能够建立起服务器,不断地侦听来自客户端的连接请求;②服务器端开始接收客户端发来的对应"方法"的名称、参数类型、参数值;③服务器根据客户端发送来的信息找到相关方法并执行,并将"响应"返回给客户端。
总结:在RMI实际工作过程中,客户端只有接口,不存在也不需要才在该接口的实现类;客户端对RMI的方法的执行实质上都是传递方法信息和方法参数,再从服务器端接受执行结果;故在客户端获取代理时,能提供的仅是接口,不可能提供改接口的实现类。
RMI实现技术的核心
由以上的讨论可以总结出来完成RMI的技术核心有如下五个方面:
①代理机制
②反射机制
③网络传递参数
④网络传递返回值
⑤短连接
RMI技术的实现代码
1、首先建立一个关于成员为class类型和Object类型的基础类,并设置get和set方法。
2、建立RMIFactory类,该类的作用为扫描相关的RMIMapping.xml文件,得到配置文件中接口和该接口相应对象的字符串信息,利用反射机制得到相关类与实例化对象后new一个RMIDefination类将其存储到Map中。
3、编写RMIServer,该类的主要作用是实现RMI服务器对客户端消息的侦听以及服务器的开关或和强制宕机等功能。
4、在RMIServer端接收到了来自客户端的"请求"后,调用下面的RMIServerice类里面的方法完成对相关"请求"信息的处理并返回信息处理结果给客户端。
在RMIService类中需要对客户端的"请求“信息做处理,未来复合JAVA的单一职责,降低耦合,我们在此处新建了以个MethodInfomation类专门处理有关信息。
相关的类代码实现如下:
以上代码便简单完成了RMI的服务器端,下面我们看看RMI的客户端代码;
5、RMIClient部分:客户端运用的的代理机制,并将接口中要方法的相关信息和参数通过网络信道传输到服务器端,并且接受服务器端的执行结果,在信息传输过程中用到了Gson。
以上便为RMI简单实现的整个过程,里面用到的自己编写的工具有XMLParser、MecType、ArgumentMaker以及MecType,关于这部分内容和测试结果放在后续内容中作进一步讲解。