利用RMI实现JAVA分布式应用 - 编程入门网
时也支持对象。对象序列化支持把对象编码以及将通过它们可访问到的对象编码变成字节流;同时,它也支持流中对象图形的互补重构造。序列化用于轻型持久性和借助于套接字或远程方法调用(RMI)进行的通信。序列化中现在包括一个 API(Application Programming Interface,应用程序接口),允许独立于类的域指定对象的序列化数据,并允许使用现有协议将序列化数据域写入流中或从流中读取,以确保与缺省读写机制的兼容性。
为编写应用程序,除多数瞬态应用程序外,都必须具备存储和检索 Java对象的能力。以序列化方式存储和检索对象的关键在于提供重新构造该对象所需的足够对象状态。存储到流的对象可能会支持 Serializable(可序列化)或 Externalizable(可外部化)接口。对于Java对象,序列化形式必须能标识和校验存储其内容的对象所属的Java类,并且将该内容还原为新的实例。对于可序列化对象,流将提供足够的信息将流的域还原为类的兼容版本。对于可外部化对象,类将全权负责其内容的外部格式。序列化 Java 对象的目的是:提供一种简单但可扩充的机制,以序列化方式维护 Java对象的类型及安全属性;具有支持编组和解编的扩展能力以满足远程对象的需要;具有可扩展性以支持 Java 对象的简单持久性;只有在自定义时,才需对每个类提供序列化自实现;允许对象定义其外部格式。 利用RMI实现JAVA分布式应用(2)时间:2010-09-28三、分布式应用的实现和运行步骤 编写Java RMI分布式应用程序的步骤主要包括以下几步: (1) 将远程类的功能定义为Java接口。在Java中,远程对象是实现远程接口的类的实例。在远程接口中声明每个要远程调用的方法。远程接口具有如下特点:1) 远程接口必须声明为public。如果不这样,则除非客户端与远程接口在同一个包内,否则当试图装入实现该远程接口的远程对象时会得到错误结果。2) 远程对象扩展java.rmi.Remote接口。3) 除了所有应用程序特定的例外之外,每个方法还必须抛出java.rmi.RemoteException例外。4) 任何作为参数或返回值传送的远程对象的数据类型必须声明为远程接口类型,而不是实现类。 (2) 编写和实现服务器类。该类是实现(1)中定义的远程接口。所以在该类中至少要声明实现一个远程接口,并且必须具有构造方法。在该类中还要实现远程接口中所声明的各个远程方法。 (3) 编写使用远程服务的客户机程序。在该类中使用java.rmi.Naming中的lookup()方法获得对远程对象的引用 ,依据需要调用该引用的远程方法,其调用方式和对本地对象方法的调用相同。 实现了服务器和客户机的程序后,就是编译和运行该RMI系统。其步骤有: (1) 使用javac编译远程接口类,远程接口实现类和客户机程序。 (2) 使用rmic编译器生成实现类的stub和skeleton。 (3) 启动RMI注册服务程序rmiregistry。 (4) 启动服务器端程序。 (5) 启动客户机程序。 四、实例分析 本文以一个实例来说明怎样编写RMI分布式应用系统。该实例用于实现一个三层的Client/Server程序,即包括数据库服务器、应用服务器和客户机三部分。其功能是让应用服务器把客户机发出的数据库查询请求传送到数据库服务器,数据库服务器再把数据库查询操作的结果送回应用服务器,然后送到客户端显示。整个系统包括服务器端和客户端程序,但这只是逻辑上的划分,其实它们都位于同一个机器上,即Web服务器。在客户端是一个Applet,通过它获得远程对象的引用,并调用远程对象的方法。而应用服务器上的程序其主要的功能是完成对数据库连接的配置、数据库的查询操作和把查询结果转换成可序列化的RecSet对象,当客户端调用远程对象的远程方法时就把它作为参数或返回值传递给客户端,实现服务器与客户机的通信。客户端得到查询结果后把它显示出来。在应 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |