IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

RMI的简单介绍

关联任务:

任务五

直播时间:

2018-07-11 16:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

RMI的简单介绍     上品

辅导师兄 [真传弟子]UI-汪瑶


大家好,我是 IT 修真院武汉分院第十三期的学员白晨松,一枚正直纯洁善良的 java 程序员

今天给大家分享一下,修真院官网 JAVA 任务八,深度思考中的知识点——简单介绍 RMI

1. 背景介绍

RMI 全称是 Remote Method Invocation-远程方法调用,Java RMI  JDK1.1 中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯 Java 的网络分布式应用系统的核心解决方案之一。其实它可以被看作是 RPC  Java 版本。但是传统 RPC 并不能很好地应用于分布式对象系统。而 Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。

RMI 目前使用 Java 远程消息交换协议 JRMPJava Remote Messaging Protocol)进行通信。由于 JRMP 是专为 Java 对象制定的,Java RMI 具有 Java  "Write Once,Run Anywhere" 的优点,是分布式应用系统的百分之百纯 Java 解决方案。用 Java RMI 开发的应用系统可以部署在任何支持 JRE 的平台上。但由于 JRMP 是专为 Java 对象制定的,因此,RMI 对于用非 Java 语言开发的应用系统的支持不足。不能与用非 Java 语言书写的对象进行通信。

2. 知识剖析

RMI 的组成

一个正常工作的 RMI 系统由下面几个部分组成:

1. 远程服务的接口定义
2. 远程服务接口的具体实现 
3. 桩(Stub)和框架(Skeleton)文件
4. 一个运行远程服务的服务器 
5. 一个 RMI 命名服务,它允许客户端去发现这个远程服务
6. 类文件的提供者(一个 HTTP 或者 FTP 服务器)
7. 一个需要这个远程服务的客户端程序 

调用远程 RMI 的步骤:

1,客户调用客户端辅助对象 stub 上的方法 

2,客户端辅助对象 stub 打包调用信息(变量,方法名),通过网络发送给服务端辅助对象 skeleton

3,服务端辅助对象 skeleton 将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象

4,调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象 skeleton 

5,服务端辅助对象将结果打包,发送给客户端辅助对象 stub

6,客户端辅助对象将返回值解包,返回给调用者

7,客户获得返回值

3. 常见的问题

1.RMI 远程方法调用的优点。

4. 解决方案

RMI 的主要优点:

面向对象:RMI 可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,您可以将类似 Java 哈希表这样的复杂类型作为一个参数进行传递。

可移动属性: RMI 可将属性 (类实现程序从客户机移动到服务器,或者从服务器移到客户机。这样就能具备最大的灵活性,因为政策改变时只需要您编写一个新的 Java 类,并将其在服务器主机上安装一次即可。

 全:RMI 使用 Java 内置的安全机制保证下载执行程序时用户系统的安全。

便于编写和使用:编写 RMI 实际上就是 编写 java 接口

可连接现有 / 原有的系统:  RMI 可利用标准 Java 本机方法接口 JNI 与现有的和原有的系统相连接

编写一次,到处运行

分布式垃圾收集: RMI 采用其分布式垃圾收集功能收集不再被网络中任何客户程序所引用的远程服务对象。并行计算:RMI 采用多线程处理方法,可使您的服务器利用这些 Java 线程更好地并行处理客户端的请求。

5. 编码实战

6. 扩展思考

RMI 有什么劣势

        RMI 的局限性之一是 RMI  Java 语言的远程调用,两端的程序语言必须是 Java 实现,对于不同语言间的通讯可以考虑用 Web Service 或者公用对象请求代理体系(CORBA)来实现。

        对服务器的 IP 地址和端口依赖很紧密,但是在开发的时候不知道将来的服务器 IP 和端口如何,但是客户端程序依赖这个 IP 和端口。这也是 RMI 的局限性之一。这个问题有两种解决途径:一是通过 DNS 来解决,二是通过封装将 IP 暴露到程序代码之外。

7. 参考文献

RMI 的基本使用知识

http://www.blogjava.net/zhenyu33154/articles/320245.html

RMI 优劣势总结

https://blog.csdn.net/mingtianhaiyouwo/article/details/50513577           

讨论问题:

问:

 1.Spring RMI 会占用两个端口?

 2.registryPort  servicePort

 3.RMI 服务器重启,总是会出现客户端连接拒绝的问题。

答:

1.Spring RMI 有两个端口,一个是注册端口(默认为 1099),还有一个是数据传输端口,如果不指定,数据传输端口是随机分配的。

    

2. 注册端口:registryPort   注册端口是 RMI 注册远程服务的端口。

    服务端口:servicePort    RMI 的通讯需要的传送数据的端口。如果没有设置 servicePort, 则使用随机端口。

3. 服务器重启会影响到客户端说明客户端有保存着重启之前的服务器连接相关记录。有可能是客户端有缓存,所以只要刷新缓存即可解决问题。

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

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~


评论

[武汉|荣耀师兄]JAVA-石奥林 发表于 2018-09-01 16:27:11 #1

讲得不错,这个功能好多人都没做,值得学习。

回复

请您登录 后进行评论