发表于: 2017-10-30 22:28:52

1 654


今天完成的事情:

今天白天看基础书 然后针对性的看了一些视频

确实基础是真的差  有些细小的地方还是学习了

比如就是调用方法的时候的内存分布


然后就是晚上学习Spring RMI

现在只是很简略的看了下大概的实现原理和一些需要的东西

然后看了很多博客的实现代码

大概实现起来不难  现在关键就是任务怎么去做可能还需要请教下师兄


分布式对象和RMI

分布式对象技术主要是在分布式异构环境下简历应用系统框架和对象构件。在应用系统框架的支撑下,开发者可以将软件功能封装为更易于管理和使用的对象,这些对象可以跨越不同的软、硬件平台进行互操作。目前,分布式互操作标准主要有Microsoft的COM/DCOM标准、Oracle(前Sun)公司的Java RMI标准、OMG组织的CORBRA标准。

在Java中RMI在包java.rmi和java.rmi.server中。RMI是开发网络应用程序的一种强有力的技术,而不用担心底层的网络细节。RMI凭借一个更为通用的原创对象模型胜过了C/S模型。在这个模型里,有服务器定义客户端可以远程使用的对象,就好像它确实是一个运行在和客户端相同的环境下的本地对象。RMI隐藏了底层的有关传输方法参数和通过网络返回方法返回值的机制。一个参数或者返回值可以是一个简单值或者任何Serializable(可序列化:即对象可以转化成文件,存储在磁盘上)对象。


RMI程序构成

远程方法调用RMI是jdk 1.1 中引入的分布式对象软件包,他的出现大的简化了分布异构环境中Java应用程序直接的通信。

要开发一个基于RMI的应用程序,必须创建四个主要的类:


  • 远程对象接口(例: RMethod)

    这个接口中包含了所有远程方法的声明。在实际使用中,客户端只知道这个接口的存在,并不关心这个接口是如何实现的。
    它扩展了java.rmi.Remote接口,定义了远程对象执行的输出方法。该接口的每个方法都必须定义为抛出一个java.rmi.RemoteException异常,它是许多更专门的RMI异常类的父类。每个远程方法都必须声明为可以RemoteException移除,因为在通过网络调用远程方法的过程中,有很多意想不到的问题可能会引发错误。

  • 远程对象实现(例: RMethodImpl)

    这是远程对象接口(RMethod)的具体实现。它包含了实现远程接口的具体代码,可以在这些远程方法的实现代码中加入一些输出语句(或者log4j),以测试其被调用的情况。

    这个类同时是java.rmi.server.UnicastRemoteObject的子类。它代表了远程对象或者服务器对象。与声明远程方法来抛出RemoteException对象不同,该远程对象不需要做任何专门的事情来允许它的方法被远程调用。UnicastRemoteObject和RMI其余的基本结构将自动进行处理。

  • RMI服务器端(例:Server)

    RMI服务器端生成远程对象的一个实例,并用一个专用的URL进行注册。


远程对象接口(RMethod.java)

这里作为实现,只定义了一个远程方法,在实际应用中,我们可以定义很多的远程方法,一起完成我们需要的功能。

远程对象实现(RMethodImpl.java)


公共配置接口(Config.java)

在这个接口只能怪,定义了服务器和客户端共同使用的配置信息。这样,让某些信息变化时,只需要修改该接口,而不用去修改其他代码。


RMI服务器端(Server.java)

服务器端的主要任务是创建远程对象实现的实例,并按照公用配置文件制定的对象名将这个实例注册到服务器端上。

当注册成功之后,服务器端程序就处于阻塞状态,等待客户端的远程对象访问请求。


RMI客户端(Client.java)

客户端通过调用服务器端提供的远程方法,来实现与服务器的通信。这样就不需要考虑具体的通信细节。只要像使用本地方法一样调用服务器端的远程方法,完成需要的功能。

要调用远程方法,客户端必须先构造一个RMI URL来找到远程对象(注意在服务器端我们只使用远程对象接口),然后通过远程对象来调用远程方法。


时间原因还有一部分没看完  每天看完了继续总结


明天的计划:很想这两天就把任务8结束了,等会写完日报再去翻翻日报学习下


遇到的问题:查漏补缺


收获:基础知识还有了解RMI


任务进度:任务8步骤1

任务开始时间:2017-10-28

预计结束时间:2017-11-5

禅道:http://task.ptteng.com/zentao/task-view-10472.html




返回列表 返回列表
评论

    分享到