分享人:曲艳行
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
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接口)
创建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的序列化机制,所以通过网络传输的对象类型必须保证在调用的两端是相同的版本。
客户端连接不到服务
1、服务端没有运行
2、服务端防火墙限制
分布式应用的优点
1.降低耦合度,增删一个功能,不会影响其它功能模块
2.因为优点1的存在,对于团队来说,可以更好的分配开发任务,比如各个团队负责一个独立的模块,开发完成后,只需要利用webservice服务的形式将模块的功能以API的形式开放出来
http://blog.csdn.net/junshuaizhang/article/details/27357701
http://blog.csdn.net/a123demi/article/details/51179083
感谢观看,如有出错,恳请指正
BY : sweetalin