什么是RMI

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

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

RMI与CORBA的关系

RMI 和CORBA常被视为相互竞争的技术,因为两者都提供对远程分布式对象的透明访问。但这两种技术实际上是相互补充的,一者的长处正好可以弥补另一者的短处。RMI 和 CORBA 的结合产生了 RMI-IIOP,RMI-IIOP 是企业服务器端 Java 开发的基础

1997 年,IBM 和 Sun Microsystems启动了一项旨在促进 Java 作为企业开发技术的发展的合作计划。两家公司特别着力于如何将 Java 用作服务器端语言,生成可以结合进现有体系结构的企业级代码。所需要的就是一种远程传输技术,它兼有 Java 的 RMI(Remote Method Invocation,远程方法调用)较少的资源占用量和更成熟的 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)技术的健壮性。出于这一需要,RMI-IIOP问世了,它帮助将 Java 语言推向了目前服务器端企业开发的主流语言的领先地位。

RMI的组成

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

远程服务的接口定义

远程服务接口的具体实现

桩(Stub)和框架(Skeleton)文件

一个运行远程服务的服务器

一个RMI命名服务,它允许客户端去发现这个远程服务

类文件的提供者(一个HTTP或者FTP服务器

 

一个需要这个远程服务的客户端程序

RMI应用高级篇:扩展RMI框架

1、使用Java XML扩展应用程序服务器与客户端接口

在进阶篇中,应用程序服务器返回给客户端的数据集需要用户自己管理,而不是标准的容器,可能会影响客户端的开发效率。但是如果将返回的数据集采用Java XML技术进行包装,就可以较好地扩展RMI框架的应用。即通过XML定义来实现数据集的管理,那么RMI应用框架可以扩展为:

在客户端和应用程序服务器之间加了XML提供服务器,将应用程序服务器返回的数据集用XML进行包装后再提供给客户端,而客户端使用标准XML解析器对数据进行使用。

或者可以将XML提供服务器当作应用程序服务器的扩展部分,这样甚至可以把应用程序服务器当作完成的SOAP服务器来看待(当然在应用程序服务端也添加XML Parser),这样客户端与应用程序服务器之间的交互手段就更加多样了(通过XML进行数据查询,更新操作等)。

 

 

 

2、通过JNDI和Broker技术扩展应用程序服务器与后台服务器的连接

在大型的数据应用中为了实现对应多变的业务扩展,在后台服务器之上往往添加了JNDI服务。而在很多的商务应用中,为了实现7×24的服务,用到了Broker技术,以对应系统故障和负载平衡。那么扩展后的RMI将是:

需要说明的是,JNDI和Broker只是起到牵线搭桥的作用,并不影响后台服务器与应用程序服务器和应用程序服务器与客户端的连接。

对于JNDI技术,所有的可用服务信息都将注册在JNDI服务器,让客户端通过RMI机制调用应用程序服务器远程接口时,应用程序服务器就会根据JNDI服务器的服务注册信息定位到相应的服务提供连接,等待应用程序服务器与后台服务器连接形成之后,JNDI将不再参与到连接当中(JNDI可以理解为注册服务提供)。

对于Broker机制,可用的应用服务器主机信息都存放在Broker服务器端,当客户端请求连接时, Broker服务器根据应用程序服务器主机的工作状态来选择应答的应用程序服务器,以实现负载平衡。

3、结论

Java RMI通过序列化机制,实现了客户端对远程方法的调用,满足了分布式处理的要求。并且通过屏蔽调用细节,做到了调用远程方法和使用本地方法一样简单。但是Java良好的可扩展性和开放性使得RMI的应用更为显著:

(1)RMI应用体系可以具有良好的安全性,通过序列化检查和安全策略文件等保证了RMI系统的稳健,另外RMI可以穿透防火墙,也利于企业安全部署。

(2)RMI应用体系可以结合Java XML,JNDI等技术进行扩展,完全满足企业分布式处理和SOA相关应用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值