龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

基于Java的企业分布式应用(2)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
RMI的基本体系结构,概括起来说,由三个抽象层组成: 1、存根/框架层(Stubs/Skeletons Layer) RMI为我们引入了两种特殊类型的对象,称为存根(Stub)和框架(Skel

  RMI的基本体系结构,概括起来说,由三个抽象层组成:

  1、存根/框架层(Stubs/Skeletons Layer)

  RMI为我们引入了两种特殊类型的对象,称为存根(Stub)和框架(Skeleton),它们组成了RMI的第一层。

  在远程通信的时候,要利用TCP/IP协议,做很多底层数据的打包传输。运用Java技术,我们先要把数据或者对象转换成字节流(byte stream),便于网络传输,这个过程叫汇集(marshaling);当收到远程传来的字节流后,我们要把流信息转换成对象或者数据,这个过程叫解读(unmarshaling),它与汇集刚好相反。

  Stub和Skeleton层位于实际应用程序之下,建立在Proxy(代理)设计方案之上。Stub类的作用是远程服务器实现的代理的角色,Stub是客户方对象;Skeleton类用于帮助对象通过RMI链接与Stub通信,它从链路中读取方法调用的参数,向远程服务实现对象进行调用,接受返回值,然后再把返回值写回到Stub。

  2、远程引用层(Remote Reference Layer)

  远程引用层定义和支持着RMI连接的调用语义(semantics)。

  RMI进行远程访问要用到JRMP(Java Remote Method Protocol,即Java远程方法协议),这一层提供专用于JRMP的RemoteRef对象,它位于java.rmi.server包内,代表着远程对象的一个句柄。RemoteRef使用远程引用来执行远程对象的一个远程方法调用。

  3、传输层(Transport Layer)

  传输层在JVM之间建立基于流的网络连接,并且负责设置和管理这些连接。这时候,RMI使用一种线级(wire-level)协议进行基于TCP/IP的连接,该协议就是Java远程方法协议(JRMP,即Java Remote Method Protocol)。

  在JDK版本1.2开始,JRMP不再需要Skeleton,而是使用reflection来建立与远程服务的连接。为了生成Stub,我们须用rmic。
  当前的RMI实现中,传输层建立在TCP/IP基础上,设计用于在客户和服务器之间建立一条连接(即使联网有障碍)。
   开发的基本步骤

  我们使用RMI编写Client/Server模式(客户/服务器)应用程序,包括6个基本步骤:

  1) 定义远程接口

  2) 实现远程接口

  3) 准备远程调用的服务器对象

  4) 生成残根Stub(客户代理)和框架Skeleton(服务器实体)

  5) 用rmiregistry找到远程对象

  6) 运行测试RMI分布式应用

  开发企业信息发布系统实例

  在开发RMI进行分布式访问之前,需要将各项功能模块化,即把实际应用抽象成符合Java规范的类和接口模型,使这些类和接口之间互相协作,能实现各自独立的功能,最后,可以把它们组合成统一的网络分布式系统。

  现在,我们就以开发公司信息发布系统为例,把主模块(主要的类文件)的名称暂定为InfoDistributeService(信息发布服务),为了保持应用开发的数据一致性和清晰度,接下来涉及的其它模块命名也将以这个模块命名为基准。

精彩图集

赞助商链接