RMI简单介绍

java分享会

分享人:曲艳行

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

rmi是什么

RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。

远程调用RMI(Remote Method Invocation): 通过使用RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的暴露远程调用(支持任何Java接口)

2.知识剖析

创建rmi步骤:

1. 生成一个远程接口;

2. 实现远程对象(服务器端程序)

3.生成占位程序和骨干网(服务器端程序)

4.编写服务器程序

5、编写客户程序

6、注册远程对象

7、启动远程对象

RMI远程访问基本流程

1). 服务端定义远程访问接口;

2). 服务端通过RmiServiceExporter暴露服务接口

3). 客户端定义与服务端已暴露的相同接口

4). 客户端通过RmiProxyFactoryBean调用服务接口

RMI远程调用步骤:

方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传 输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。 占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。 远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。最后,占位程序获得返回值。

注意

1、RMI是很难穿越防火墙的;

2、RMI是基于Java的,这意味着客户端和服务端必须都是采用Java开发的;

3、因为RMI使用了Java的序列化机制,所以通过网络传输的对象类型必须保证在调用的两端是相同的版本。

3.常见问题

客户端连接不到服务

1、服务端没有运行

2、服务端防火墙限制

5.编码实战

6.扩展思考

分布式应用的优点

1.降低耦合度,增删一个功能,不会影响其它功能模块

2.因为优点1的存在,对于团队来说,可以更好的分配开发任务,比如各个团队负责一个独立的模块,开发完成后,只需要利用webservice服务的形式将模块的功能以API的形式开放出来

7.参考文献

http://blog.csdn.net/junshuaizhang/article/details/27357701

http://blog.csdn.net/a123demi/article/details/51179083

8.更多讨论

鸣谢

感谢观看,如有出错,恳请指正

BY : sweetalin