您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 使用serializable和remote进行编程
使用serializable和remote进行编程关于serializable和remote,在网上找了很多资料,但是最终还是不知道怎么整合去做一个程序,所以这个有点偷工减料的直接将一些资源统合,按照网上的步骤和解释就直接完成。一、串行化的概念和目的(摘自:)1.什么是串行化对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己,这个过程叫对象的串行化(Serialization)。串行化的主要任务是写出对象实例变量的数值。如果交量是另一对象的引用,则引用的对象也要串行化。这个过程是递归的,串行化可能要涉及一个复杂树结构的单行化,包括原有对象、对象的对象、对象的对象的对象等等。对象所有权的层次结构称为图表(graph)。2.串行化的目的Java对象的单行化的目标是为Java的运行环境提供一组特性,如下所示:1)尽量保持对象串行化的简单扼要,但要提供一种途径使其可根据开发者的要求进行扩展或定制。2)串行化机制应严格遵守Java的对象模型。对象的串行化状态中应该存有所有的关于种类的安全特性的信息。3)对象的串行化机制应支持Java的对象持续性。4)对象的串行化机制应有足够的可扩展能力以支持对象的远程方法调用(RMI)。5)对象串行化应允许对象定义自身的格式即其自身的数据流表示形式,可外部化接口来完成这项功能。二、串行化方法从JDK1.1开始,Java语言提供了对象串行化机制,在java.io包中,接口Serialization用来作为实现对象串行化的工具,只有实现了Serialization的类的对象才可以被串行化。RMI可利用标准Java本机方法接口JNI与现有的和原有的系统相连接。RMI还可利用标准JDBC包与现有的关系数据库连接。RMI/JNI和RMI/JDBC相结合,可帮助您利用RMI与目前使用非Java语言的现有服务器进行通信,而且在您需要时可扩展Java在这些服务器上的使用。RMI可帮助您在扩展使用时充分利用Java的强大功能。一、RMI(远程方法调用)的组成一个正常工作的RMI系统由下面几个部分组成:•远程服务的接口定义•远程服务接口的具体实现•桩(Stub)和框架(Skeleton)文件•一个运行远程服务的服务器•一个RMI命名服务,它允许客户端去发现这个远程服务•类文件的提供者(一个HTTP或者FTP服务器)•一个需要这个远程服务的客户端程序二、RMI(远程方法调用)原理示意图方法调用从客户对象经占位程序(Stub)、远程引用层(RemoteReferenceLayer)和传输层(TransportLayer)向下,传递给主机,然后再次经传输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。最后,占位程序获得返回值。要完成以上步骤需要有以下几个步骤:1、生成一个远程接口2、实现远程对象(服务器端程序)3、生成占位程序和骨干网(服务器端程序)4、编写服务器程序5、编写客户程序6、注册远程对象7、启动远程对象三、RMI(远程方法调用)的优点从最基本的角度看,RMI是Java的远程过程调用(RPC)机制。与传统的RPC系统相比,RMI具有若干优点,因为它是Java面向对象方法的一部分。传统的RPC系统采用中性语言,所以是最普通的系统--它们不能提供所有可能的目标平台所具有的功能。RMI以Java为核心,可与采用本机方法与现有系统相连接。这就是说,RMI可采用自然、直接和功能全面的方式为您提供分布式计算技术,而这种技术可帮助您以不断递增和无缝的方式为整个系统添加Java功能。RMI的主要优点如下:面向对象:RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,您可以将类似Java哈希表这样的复杂类型作为一个参数进行传递。而在目前的RPC系统中,您只能依靠客户机将此类对象分解成基本数据类型,然后传递这些数据类型,最后在服务器端重新创建哈希表。RMI则不需额外的客户程序代码(将对象分解成基本数据类型),直接跨网传递对象。可移动属性:RMI可将属性(类实现程序)从客户机移动到服务器,或者从服务器移到客户机。这样就能具备最大的灵活性,因为政策改变时只需要您编写一个新的Java类,并将其在服务器主机上安装一次即可。设计方式:对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能,如二层和三层结构系统。如果您能够传递属性,那么您就可以在您的解决方案中使用面向对象的设计方式。所有面向对象的设计方式无不依靠不同的属性来发挥功能,如果不能传递完整的对象--包括实现和类型--就会失去设计方式上所提供的优点。安全:RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。RMI使用专门为保护系统免遭恶意小应用程序侵害而设计的安全管理程序,可保护您的系统和网络免遭潜在的恶意下载程序的破坏。在情况严重时,服务器可拒绝下载任何执行程序。便于编写和使用:RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松、简单。远程接口实际上就是Java接口。服务程序大约用三行指令宣布本身是服务程序,其它方面则与任何其它Java对象类似。这种简单方法便于快速编写完整的分布式对象系统的服务程序,并快速地制做软件的原型和早期版本,以便于进行测试和评估。因为RMI程序编写简单,所以维护也简单。可连接现有/原有的系统:RMI可通过Java的本机方法接口JNI与现有系统进行进行交互。利用RMI和JNI,您就能用Java语言编写客户端程序,还能使用现有的服务器端程序。在使用RMI/JNI与现有服务器连接时,您可以有选择地用Java重新编写服务程序的任何部分,并使新的程序充分发挥Java的功能。类似地,RMI可利用JDBC、在不修改使用数据库的现有非Java源代码的前提下与现有关系数据库进行交互。编写一次,到处运行:RMI是Java“编写一次,到处运行”方法的一部分。任何基于RMI的系统均可100%地移植到任何Java虚拟机上,RMI/JDBC系统也不例外。如果使用RMI/JNI与现有系统进行交互工作,则采用JNI编写的代码可与任何Java虚拟机进行编译、运行。分布式垃圾收集:RMI采用其分布式垃圾收集功能收集不再被网络中任何客户程序所引用的远程服务对象。与Java虚拟机内部的垃圾收集类似,分布式垃圾收集功能允许用户根据自己的需要定义服务器对象,并且明确这些对象在不再被客户机引用时会被删除。并行计算:RMI采用多线程处理方法,可使您的服务器利用这些Java线程更好地并行处理客户端的请求。Java分布式计算解决方案:RMI从JDK1.1开始就是Java平台的核心部分,因此,它存在于任何一台1.1Java虚拟机中。所有RMI系统均采用相同的公开协议,所以,所有Java系统均可直接相互对话,而不必事先对协议进行转换。四、RMI与CORBA的关系RMI和CORBA常被视为相互竞争的技术,因为两者都提供对远程分布式对象的透明访问。但这两种技术实际上是相互补充的,一者的长处正好可以弥补另一者的短处。RMI和CORBA的结合产生了RMI-IIOP,RMI-IIOP是企业服务器端Java开发的基础。1997年,IBM和SunMicrosystems启动了一项旨在促进Java作为企业开发技术的发展的合作计划。两家公司特别着力于如何将Java用作服务器端语言,生成可以结合进现有体系结构的企业级代码。所需要的就是一种远程传输技术,它兼有Java的RMI(RemoteMethodInvocation,远程方法调用)较少的资源占用量和更成熟的CORBA(CommonObjectRequestBrokerArchitecture,公共对象请求代理体系结构)技术的健壮性。出于这一需要,RMI-IIOP问世了,它帮助将Java语言推向了目前服务器端企业开发的主流语言的领先地位。(来源:sun;matrix.org.cn)原代码链接:这个代码主要实现的就是在一个指定的路径进行io输入输出。首先implements的作用是提供一个输入输出的端口,而remote是将远程端口接入客户端程序。在该程序中,客户端与服务器端的理想化是分离的,使用服务器端建立一个本地的端口。然后使用子端(客户端)进行远程的连接。
本文标题:使用serializable和remote进行编程
链接地址:https://www.777doc.com/doc-2687115 .html