大家好,我是IT修真院北京分院第28期的学员,一枚正直纯洁善良的java程序员
今天给大家分享一下,修真院官网java任务8,rmi简介。
1.背景介绍
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。
2.知识剖析
创建rmi步骤:
1. 生成一个远程接口;
2. 实现远程对象(服务器端程序)
3.生成占位程序和骨干网(服务器端程序)
4.编写服务器程序
5、编写客户程序
6、注册远程对象
7、启动远程对象
RMI远程访问基本流程
1). 服务端定义远程访问接口;
2). 服务端通过RmiServiceExporter暴露服务接口
3). 客户端定义与服务端已暴露的相同接口
4). 客户端通过RmiProxyFactoryBean调用服务接口
RMI远程调用步骤:
方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传 输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。 占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。 远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。最后,占位程序获得返回值。
3.常见问题
客户端连接不到服务
4.解决方案
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.更多讨论
Q1:其他分布式框架有哪些?
A:现在流行的有springcloud、dubbo。
Q2:分布式的优点?
1.降低耦合度,增删一个功能,不会影响其它功能模块
2.因为优点1的存在,对于团队来说,可以更好的分配开发任务,比如各个团队负责一个独立的模块,开发完成后,只需要利用webservice服务的形式将模块的功能以API的形式开放出来
Q3:rmi的优点?
2.RMI的优势
这种机制给分布计算的系统设计、编程都带来了极大的方便。只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了,如:TCP和Socket等等。任意两台计算机之间的通讯完全由RMI负责。调用远程计算机上的对象就像本地对象一样方便。
1、面向对象:
RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,可以将类似Java Hash表这样的复杂类型作为一个参数进行传递。
2、可移动属性:
RMI可将属性从客户机移动到服务器,或者从服务器移动到客户机。
3、设计方式:
对象传递功能使你可以在分布式计算中充分利用面向对象技术的强大功能,如二层和三层结构系统。如果用户能够传递属性,那么就可以在自己的解决方案中使用面向对象的设计方式。所有面向对象的设计方式无不依靠不同的属性来发挥功能,如果不能传递完整的对象——包括实现和类型——就会失去设计方式上所提供的优点。
4、安全性:
RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。RMI使用专门为保护系统免遭恶意小程序侵害而设计的安全管理程序。
5、便于编写和使用
RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松、简单。远程接口实际上就是Java接口。为了实现RMI的功能必须创建远程对象任何可以被远程调用的对象必须实现远程接口。但远程
接口本身并不包含任何方法。因而需要创建一个新的接口来扩展远程接口。
新接口将包含所有可以远程调用的方法。远程对象必须实现这个新接口,由于新的接口扩展了
远程接口,实现了新接口,就满足了远程对象对实现远程接口的要求,所实现的每个对象都将
作为远程对象引用。
9.鸣谢
视频:
undefined_腾讯视频
结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
网友评论