预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第20卷第1期宁波大学学报(理工版)Vol.20No.1 2007年3月JOURNALOFNINGBOUNIVERSITY(NSEE)Mar.2007 文章编号:1001-5132(2007)01-0046-05 JavaRMI的企业级应用及框架设计 赵永标 (宁波大学理学院,浙江宁波315211) 摘要:对RMI在企业级应用进行了探讨,分析了JavaRMI在企业级应用中存在的缺陷,并设计 一个框架作为运行容器的方案来解决这些缺陷,该方案能有效地应对企业级的应用. 关键词:RMI;企业级应用;缺陷;框架 中图分类号:TP311.52文献标识码:A JavaRMI(RemoteMethodInvocation,远程方量、高安全性、高稳定性和具有强大的灵活性的基 法调用)是用Java语言在JDK1.1中实现的,它大大础之上,这在很大程度上需要在系统架构的层次上 增强了Java开发分布式应用的能力[1,2].Java的独特予以支持[3].基于对RMI技术内涵的理解和实际的 优势体现在它强大的开发分布式网络应用的能力工程开发经验,可以得出:在开发具有高要求的应 上,RMI是开发百分之百纯Java网络分布式应用系用时,RMI为我们提供了技术基础,但它所包含的 统的核心解决方案之一.RMI目前使用Java远程消或者它所反映出的一些JVM的基础性服务由于存 息交换协议JRMP(JavaRemoteMessagingProtocol)在2个缺陷,仍然不足以成为一个成熟的应用程序 进行通信,而JRMP是专为Java的远程对象制定的服务器. 协议.因此,JavaRMI具有Java的“WriteOnce,Run1.1不能妥善管理RMI连接的问题 Anywhere”的优点,用JavaRMI开发的应用系统可这里的RMI连接不是指客户端与服务器端的 以部署在任何支持JRE(JavaRuntimeEnvironment,连接过程,而是需要假定在分布式系统可以正常运 Java运行环境)的平台上.行的基础上探讨更深层次的问题.因为如代理类 JavaRMI技术给应用程序开发者提供了一种和框架类通信类的基础连接技术问题,RMI内含的 可以调用远程对象方法的抽象功能,隐藏了低级通基础服务器可以通过抛出异常来解决.RMI连接的 信的过程,提供了在Java技术领域开发分布式系问题可以通过以下案例来说明. 统的基础技术.如果客户端调用服务器端,需要访问服务器端 的一个私有对象,这意味着处理这个对象的任何方 1RMI在企业级应用的一些缺陷法都是同步的,因此调用的方法,不一定可以及时 获得对处理对象的处理权.甚至,如果其他方法在 企业级分布式系统要求整个系统架构在高容处理这个对象的过程中发生了意外堵塞,所调用的 收稿日期:2006-09-13.宁波大学学报(理工版)网址:http://3xb.nbu.edu.cn 作者简介:赵永标(1980-),男,山东鱼台人,在读硕士研究生,主要研究方向:自动推理与软件设计.E-mail:g04c07010101@email.nbu.edu.cn 第1期赵永标:JavaRMI的企业级应用及框架设计47 远程方法有可能永远也无法获得对该对象的处理甚至EJB系统的开发,比普通的RMI开发简单.这 权,从而导致RMI连接线程进入了非正常状态,是基于这样一个事实:EJB运行于容器内.这一容 那么不仅原始的用户被阻塞,而且RMI连接线程器,实质上就是一个保障EJB正常运行的框架 会永远的挂起.因为基础的RMI的服务器没有机(Framework),它用于管理持久性、消息传递、线 制对这一情况做出处理,也不会抛出异常,因此程管理、日志记录、事件队列、用户界面等等[5].利 RMI连接线程也没有自己自动终止的理由.需要用框架是在系统架构级解决重大问题的妥善方案. 解决这一问题,进而提供错误记录和恢复机制.这无疑,RMI客户端和服务器端的处理逻辑管理 一类问题可能遇到的时候不多,但却是需要在系统的功能,管理连接线程的问题,日志管理的功能, 级解决的问题之一.任务队列和多线程的问题,还有错误恢复的功能, 1.2不能妥善管理服务器端逻辑处理的问题如果需要在系统级得到妥善解决,比较好的解决方 此问题来源于RMI这种分布式技术的本质:案是让客户端的逻辑和服务器端的逻辑都在统一 RMI技术所进行的任何的远端方法调用,都是属于的容器内运行.RMI框架正是要设计成这样一个 异步处理的范畴[4].因为应用程序逻辑与接口位于容器. 不同的Java虚拟机(JVM),需要发送此请求并接收 来自另一JVM的回答.众所周知,这种完全异步2JavaRMI框架的设计思路 的环境缺乏从客户端管理服务器端逻辑处理的功 能,这需要在RMI的服务器端予以解决.2.1