已阅读5页,还剩88页未读, 继续免费阅读
(计算机应用技术专业论文)基于java消息服务的消息中间件的研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 近段时间以来,愈来愈多的项目都提出了使用消息传递策略来解决异类主机 通信的问题,以及近年来消息中间件在实际工程中需求的大面积增长,使得消息 中间件的开发受到业界和学术界的重视。 消息中间件为分布式系统中创建、发送、接收消息提供了一套可靠、通用的 方法,它屏蔽了不同操作系统和网络协议的具体细节,减少了开发跨平台和网络 协议软件的复杂性。由于没有统一的规范和标准,基于各种消息中间件的应用不 可移植,不同的消息中间件也不能互操作,这大大阻碍了消息中间件的发展。j a v a 消息服务( j a v am e s s a g es e r v i c e ,j m s ) 是s u n 及其伙伴公司提出的旨在统一各种消 息中间件系统接口的规范,它促进了分布式环境中各个组件之间可靠的异步通信, 可以用来创建松散藕合的消息系统,从而大大简化了企业应用的开发。 本文在研究了j m s 规范、x m l 技术、密码技术和j n d i 服务的基础上设计并 实现了一个符合j m s1 1 规范的消息中间件系统。这个中间件系统实现了出版订 阅和点对点的消息模式;实现了六类标准的j m s 消息;实现j m s 标准a p i ;实现 了持久化消息;提供了消息的选择机制;实现了消息的同步接收和异步接收;针 对传统的的过虑方法效率较低,提出了一种改进的消息过滤算法,提高了系统的 性能;设计和实现了基于x m l 的消息格式。 虽然基于j m s 的消息系统有种种优势,然而它自身却有很大的一个不足:j m s 规范不提供控制或配置消息完整性或消息隐秘性的功能。在实际的消息系统中, 数据的安全性和可靠性一直是客户比较关心的问题。对此,本文对即将传递到网 络上的数据首先以三重d e s 算法进行加密,以保证消息在传递的途中不会被有恶 意人的窃取和篡改;然后将加密后的消息附着在以x m l 格式定义的消息头和消息 属性的后面传递到服务器;服务器从消息头中提取所需的信息将消息放入目的地。 这样就弥补了基于j m s 的消息系统在安全性方面的不足。 最后,使用l o a d r u n n e r 工具对系统进行了负载和压力测试,并与其它产品进 行了比较;对本文涉及的相关技术进行了归纳和总结,对还不完善和没有实现的地 方进行了讨论,并指出了下一步的工作。 关键词:消息中间件,k m l ,d e s ,j n d i ,j a v a 消息服务 a b s t r a c t a b s t r a c t a st i m ew e n tb y , a l li n c r e a s i n gn u m b e ro fp r o j c o t sa r er e q u i r e dt ou s et h em e s s a g e t r a n s m i s s i o n s t r a t e g y t os o l v et h e p r o b l e m s a b o u td i f f e r e n th o s t c o m p u t e r s c o m m u n i c a t i o n a n dw i t ht h ei n c r e a s i n ga p p l i c a t i o no fm o mi ne n g i n e e r i n gp r o j e c t s r e c e n t l y , t h ed e v e l o p i n go fm o m i sg e t t i n gm o r ea n dm o r er e c o g n i t i o n si ni tf i e l da n d a c a d e m e m e s s a g e o r i e n t e dm i d d l e w a r ep r o v i d e sa c o m m o nw a yt oc r e a t e ,s e n da n dr e c e i v e m e s s a g ei n d i s t r i b u t e ds y s t e m s ,i tr e d u c e st h ec o m p l e x i t yi nd e v e l o p i n gt h ec r o s s p l a t f o r ma n dn e t w o r kp r o t o c o ls o f t w a r e t h ea p p l i c a t i o nb a s e do nm e s s a g e o r i e n t e d m i d d l e w a r ec a l ln o tt r a n s p l a n tf o rt h e r ei s n tas t a n d a r do rs p e c i f i c a t i o n ,d i f f e r e n t m e s s a g e - o r i e n t e dm i d d l e w a r ea l s oc a n n o tm u t u a l l yo p e r a t e , i th i n d e r st h ed e v e l o p m e n t o fm e s s a g e - o r i e n t e dm i d d l e w a r e j a v am e s s a g es e r v i c e ( j m s ) i sas p e c i f i c a t i o nw h i c h w a sp r o p o s e db ys u na n di t sp a r t n e rc o m p a n yf o r t h ep u r p o s eo fu n i f y i n ge a c hk i n do f m e s s a g e o r i e n t e d m i d d l e w a r e s y s t e m i n t e r f a c e i t p r o m o t e s t h er e l i a b i f i t yo f a s y n c h r o n o u sc o m m u n i c a t i o nb e t w e e nc o m p o n e n t si nd i s t r i b u t e de n v i r o n m e n t ,a n d c a l l b eu s e df o re s t a b l i s h i n gl o o s e l y - c o u p l e dm e s s a g es y s t e m ;t h e r e f o r e , i ts i m p l i f i e st h e d e v e l o p m e n to fe n t e r p r i s ea p p l i c a t i o n s t h i sd i s s e r t a t i o nh a sd e s i g n e da n di m p l e m e n t e dam o ms y s t e mw h i c hi st o t a l l y c o n f o r m e dt oj m s1 1 ,b a s e do nj m ss p e c i f i c a t i o n ,x m le n c y p t i o na n dj n d is e r v i c e i tc r e a t e sp u b l i s h s u b s c r i b ea n dp o i n t t o - p o i n tm e s s a g i n gm o d e l ,i m p l e m e n t s6t y p e s t a n d a r dj m sm e s s a g e sa n da l lj m sa p lp r o v i d e sp e r s i s t e n tm e s s a g i n g , m e s s a g e s e l e c t o r , s y n c h r o n o u sm e s s a g i n gr e c e i v i n ga n da s y n c h r o n o u sm e s s a g i n gr e c e i v i n g , d e s i g n sa ni m p r o v e da l g o r i t h mf i l t e rt op r o m o t et h es y s t e m se f f i c i e n c yb e c a u s eo ft h e t r a d i t i o n a li n e f f i c i e n ta l g o r i t h mf i l t e r , a n df i n a l l yd e s i g n sa n di m p l e m e n t sm e s s a g e p r o t o c o lb a s e do n x m l t h e r ei so n eb i gd i s a d v a n t a g ei nj m ss y s t e me x c e p th i sm a n ya d v a n t a g e s :j m s s y s t e md o e s n ts u p p l yam e c h a n i s mt oe n s u r ed a t a si n t e g r a l i t y a c t u a l l y , t h es e c u r i t y a n dr e l i a b i l i t yo fd a t at r a n s m i s s i o na l w a y sd r a wt h eu s e r sa t t e n t i o nm o s t t oe n s u r et h e d a t ai sn e v e rs t o l e no rm o d i f i e db ys o m e o n em a l i c i o u s l yi nt r a n s m i s s i o n ,t h e r e b y , a l lo f t h ed a t at ob ed e l i v e r e do nt h ei n t e m e ti sf i r s t l ye n c r y p t e dw i t ht h et r i p l ed e s t h e e n c r y p t e dm e s s a g e sa r ea t t a c h e db e h i n dt h em e s s a g e h e a d e ra n dt h em e s s a g ep r o p e r t i e s w h i c ha r ed e f i n e di nx m l f o r m a ta n dt r a n s f e rt h e mt oas e r v e r , t h e nt h es o l v e rw i l lp i c k u pt h em e s s a g e sf o r mt h eh e a do fi t a n dp u tt h e mi n t od e s t i n a t i o n b yd o i n gs o ,t h e s e c u r i t yo fj m ss y s t e m s i si m p r o v e d f i n a l l y , w ec o n d u c ts o m eu n d e f l o a de x p e r i m e n t st oe v a l u a t et h ep e r f o r m a n c eo f t h es y s t e mu s i n gl o a d r u n n e rt o o l ,c o m p a r ew i t ho t h e rp r o d u c t , s u m m a r i z e dt h es k i l l s t h a ta r er e a l i z et h i ss y s t e ma n ds o m e t h i n g a r ei m m a t u r ea n du n r e a l i z e da r e d i s c u s s e d ,t h el a t e rw o r ki sp o i n t e do u t k e yw o r d s :m o m ,x m l , d e s , n d i ,j a v am e s s a g es e r v i c e 论文修改提纲 1 修改第2 页表卜1 的字体大小 2 修改第9 页图2 一l 的字体大小 3 修改第2 1 第2 段到末段的公式大小 4 修改第2 5 页图3 1 的字体大小 5 修改第2 7 页图32 的字体大小 6 修改第3 8 页图4 1 的字体大小 7 修改第4 9 页,表4 - 1 ,表4 2 ,表4 3 的字体大小 8 修改第7 8 页,表6 1 ,表6 2 的字体大小 9 笫7 8 页第1 段第l 行 原文为:本文的工作是在导师张帆教授的悉心指导下完成的 改为:本文的工作是在导师张帆的悉心指导下完成的 指导老师: 答辩主席: 答辩日期: 狱帆 鹰黧f 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行- 的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: 王立良日期:如1 年月弓日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:王立盘导师签名: 蚕丝边 日期:1 呵年7 月了日 第一章绪论 1 1 前言 第一章绪论 在分布式环境中,各种各样的应用软件需要在各种平台之间进行移植,或者 一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统 之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。这就迫切需 要一种基于标准的、独立于计算机硬件以及操作系统的开发和运行环境,中间件 正是在这个环境下应运而生的。消息中间件是中间件的一个重要分支,它为不同 系统之间提供了可靠的异步通讯和消息传递。由于没有一个通用的标准,基于各 种消息中间件的系统很难实现互操作和无缝连接,j a v a 消息服务( j a v am e s s a g e s e r v i c e ) 州是s u n 公司提出的旨在统一各种消息中间件接口的规范,它提供了一组 与具体实现无关的接口,各种分布式应用程序通过这组接口访问支持j m s 的消息 中间件,而与消息中间件的提供厂商无关。现在,j m s 技术得到了广泛的工业支 持,有着广阔的前景,而基于j m s 的消息中间件的设计并没有统一的解决方案而 且它并没有提供控制或配置消息完整性或消息机密性的功能,本文正是针对j m s 规范,对j m s 消息中间件的设计及控制消息完整性和消息机密性进行了研究。这 项上作具有十分重要的现实意义。 1 2 中间件技术 中间件( m i d d l e w a r e ) t 2 1 是基础软件的一大类,属于可复用软件的范畴。它处于 操作系统软件、网络和数据库与用户的应用软件的中间,总的作用是为处于自己 上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂 的应用软件。 在众多关于中间件的定义中,比较普遍被接受的是i d c 表述的:中间件是一 种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间 共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。 i d c 对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅 实现互连,还要实现应用之间的互操作:中间件是基于分布式处理的软件,最突出 电子科技大学硕士学位论文 的特点是其网络通信功能。因此,也有人把中间件定义为:中间件= 平台+ 通信。 1 2 1 中间件分类 中间件根据完成的功能可以大致分为:消息中间件、交易中间件、对象中间 件、应用服务器、安全中间件、应用集成服务器、数据库中间件嘲t 4 1 。 中间件名称作用 适用于任何需要进行网络通信的系统,负责建立网络通信的通 消息中间件 道,进行数据或文件发送。消息中间件的一个重要作用是可以 实现跨平台操作,为不同操作系统上的应用软件集成提供服务 适用于联机交易处理系统,主要功能是管理分布于不同计算机 交易中间件 上的数据的一致性,保障系统处理能力的效率与均衡负载。 交易中间件所遵循的主要标准是x o p e nd t p 模型 基于c o r b a 标准的构件框架,相当于软总线,能使不同厂家的软 对象中间件 件交互访问,为软件用户及开发者提供一种即插即用的互操作 性,就像现在使用集成块和扩展板装配计算机一样 用来构造i n t e m e t i n t r a n e t 应用和其它分布式构件应用,是, 应用服务器 企业实施电子商务的基础设旌。应用服务器一般是基f j 2 e e - 1 - 业标准的 数据库中间件管理数据库连接,抽象网络协议 以公钥基础设施为核心的、建立在一系列安全标准之上的一个 安全中间件 开放式应用开发平台,向上为应用系统提供开发接口,向下提 供统一的密码算法接口及各种i s 卡、安全芯片等设备驱动接口 1 2 2 中间件产生的必要性 表1 - 1 中间件的分类 九十年代初客户机服务器计算模式开始成为主流技术,将数据统一存储在数 据服务器上,而有关的业务逻辑都在客户端实现,即所谓胖终端的解决方案,这 种两层结构的模式大大阻碍着系统的发展,总的来说其局限性表现在下面几个方 面: 1 单一的服务器结构紧密地依赖于供应商: 2 第一章绪论 2 数据存取受到限制,难以扩展到大企业广域网或国际互联网; 3 客户端与服务器的紧祸合导致软件升级困难,难以管理; 4 对客户端计算资源的要求较高; 5 而要处理网络连接不稳定导致的异常,客户端的软件复杂度高。 随着用户业务需求的增长及i n t e m e t i n t r a n e t 的普及,将以三层或四层体系结 构取而代之。三层结构就是把用户端的业务逻辑独立出来,并与数据库服务器中 存储过程合并在一起,构成应用层,以提高计算能力,实现灵活性。在这种结构 中用户端仅仅是处理图形用户界面( g u i ) ,而目前趋势是采用具有交互功能的浏览 器,即形成瘦终端的工作方式,为此,中间又增加了一层,称为w e b 服务器层, 形成了四层体系结构。这类多层结构的分布系统,各服务器和终端机之间都是通 过网络连接起来的,并有大量信息和数据进行传递。对每个应用系统而言,在没 计和实现时需要开发的,仅是在应用服务器上的业务逻辑部分的软件,除此之外, 还必须要设计处理分布系统所特有的功能的软件,而目前的系统软件f 操作系统和 支撑软件) 都不支持。为此出现了中间件,它是处于系统软件和应用软件之间的一 批软件。使设计者集中设计与应用有关的部分,大大简化了设计和维护工作。 1 2 3 中间件的优势 世界著名咨询机构s t a n d i s hg r o u p 指出中间件有十大优越性,可见中间件地位 之重要,不过其最主要的优越性体现在下面几点: 1 缩短应用的的开发周期 中间件屏蔽了底层操作系统,甚至网络访问与数据库访问的复杂性,使程序 开发人员面对一个相对简单的开发环境,减少程序设计的复杂性,从而将注意力 集中在程序所特有的业务逻辑上,从而大大减少了技术上的负担。 2 节约应用的开发成木 中件间本身属于可复用软件,基于中间件平台可以开发出不同的应用开发, 虽然中件间本身的成本不低,但是通过复用从总体和长远来说是节约了应用开发 豹成本。 3 降低应用开发的失败率 由于中间件本身屏蔽了系统底层开发的复杂性,从某种意义上说简化了应用 开发的复杂度,使得开发一项应用变得相对简单,应用开发越简单,无疑开发失 败的可能性就越小。 3 电子科技大学硕士学位论文 4 保护已有的投资 中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统 上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、 数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后, 遗留的应用软件仍然可以重复利用。 5 简化应用集成 对于企业而言,进行应用集成是必由之路。由于各种应用是错综复杂,基于 不用的软硬件环境,它们之间要基于何种接口标准和协议进行集成并不是一件简 单的事情。目前通过中间件进行应用集成是个趋势,它可以降低集成的难度。 6 减少维护费用 中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系 统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。 总之,目前以中间件为基础进行应用层的开发已经是一个非常明显也很有前 景的方向。对中间件技术的研究与开发,必将推动我国软件研发能力的进一步提 高。 1 3 项目背景 近来,实验室的几个项目都有使用消息中间件的需求,但是商业中间件价格 昂贵,不便使用,而开源中间件配置非常复杂,接e l 文档不全面也不清晰。鉴于 项目的需要,实验室领导结合实际情况,提出自主开发满足实验室日常工作需要, 灵活性高,可扩展性强并且支持消息安全传输的消息中间件。 本文来源于此次参与的实验室m o m x 消息中间件项目。 1 。4 研究内容 基于j m s 的技术有着广阔的前景,而关于j m s 消息中间件的设计并没有统一 的解决方案并且对安全性的支持比较弱,本文主要的工作是基于j m s 规范,对j m s 消息中间件的设计及基于j m s 的消息过滤机制和消息安全机制进行了研究,并且 提出一些改进方法。本文主要工作如下: 1 在研究了j m s 消息中间件相关理论的基础上设计并实现了一个符合了 j m s l 1 规范的消息中间件系统。这个中间件系统建立了出版订阅和点对点的消息 4 第一章绪论 交换模式;实现了6 类标准的j m s 消息;实现了j m s 标准a ll ;实现持久化消息 交换;提供消息选择;实现了消息同步接收和异步接收; 2 针对传统的j m s 消息过滤算法效率不高的缺点,论文分析了传统j m s 过滤 算法,在这个基础上,提出了一种改进的j m s 消息过滤算法,并对算法的性能进 行了实验测试,与传统的算法进行了分析与对比。 3 针对j m s 规范不提供控制消息完整性与实际系统中用户又有安全性方面要 求的矛盾,本文在研究了密码技术基础上,设计了一个安全模块,对即将传递到 网络的数据首先以三重d e s t s j 算法进行加密,以保证消息在传递的途中不会被有 恶意的人窃取和篡改;然后将加密后的消息附着在以x m l l 6 】格式定义的消息头和 消息属性后面传递到服务器;服务器从消息头中提取所需的信息将消息放入目的 地。这样就弥补了基于j m s 的消息系统安全性方面的不足。 1 5 论文的内容安排 本节简要介绍各个章节的组织与内容,具体内容请参考具体章节。 第一章绪论 绪论主要介绍本文的研究背景,项目来源,以及研究内容。 第二章相关技术介绍 本章详细介绍了与本文相关的几种技术包括消息中间件,x m l 和密码技术。 第三章j a v a 消息服务a p i 规范 详细介绍了j m s 规范的各个相关细节。 3 2 节介绍了j m s 的体系结构,接着分别介绍了j m s 应用的组成部分, c o n n e c t i o n f a e t o r y 和d e s t i n a t i o n 管理对象,点对点和发布,订阅消息模式,然后列 表比较了j m s 中的两种消息模式的接口,最后介绍了j m s 的安全性,多线程,客 户端触发机制和请求答复等。 3 3 节重点介绍了j m s 消息的组成:消息头( h e a d e r ) ,消息属性( p r o p e r t i e s ) ,消 息体( b o d y ) 。 3 4 节详介绍了点对点模式和消息订阅模式中的相关的主要概念和对象 第四章系统设计与实现 这是本文的重点,在4 1 节中给出了系统的架构图,清楚的介绍了整个系统的 架构和组成部分,主要有两个部分:服务端和客户端,由于j m s 规范不支持安全 性,而实际中用户又有这方面的要求,因此本文在作了大量研究工作的前提下, 5 电子科技大学硕士学位论文 设计了一个安全模块用来保证用户的数据在网络中传略的安全性,并在下一章中 详细了介绍了该模块的设计思路。 4 2 节主要介绍了服务端的三个服务器的设计与实现 1 j n d i 服务器【7 1 j n d i 服务器主要提供j n d i ( j a v a 名字目录) 服务。本系统中主要使用n a m i n g s e r v i c e s ( 名字服务1 。它的主要作用是为客户端提供命名绑定,名字查询等功能。 2 m e s s a g i n g 服务器 提供处理消息实体的功能。可分为消息持久化,消息过滤,创建连接,创建 会话,创建队列,创建主题,事务功能,收发消息等功能。 本文在4 2 2 2 节中分析了j m s 服务器的消息过滤策略,在此基础上提出了一 种针对相同消息属性重复选择的优先算法,并设计了相关的数据结构 4 3 节介绍了客户端两种模式下的消息发送和接受的详细流程和部分代码和操 作时序图。 第五章安全模块 j m s 规范不提供数据安全性方面的功能,但实际的应用中用户还是有安全性 方面的要求,鉴于此,本文在做了大量研究工作的前提下,设计了这个安全模块, 很好的解决了j m s 消息中间件在安全方面的软肋,保证了数据的机密性、完整性 和不可抵赖性。 5 1 节详细介绍使用3 - d e s 和r s a 算法,加密数据以及加密密钥的传输; 5 2 节介绍了数据的完整性以及安全散列算法来保证数据的完整性 5 3 节介绍了两种数字签名函数:直接数字签名和需仲裁的数字签名 5 4 节详细讨论了由于采用3 - d e s 算法加密消息而存在的加密密钥的分发问题 5 5 节介绍了如何实现数据的机密性,完整性和不可抵赖性。 在这节中设计了消息体的结构,主要包括三个部分:刖经过3 d e s 算法加密 过的消息) ,a ( 3 d e 算法的加密密钥) 和c ( 消息摘要) ,其中将b 和c 一块加密成为签 名。系统将加密密钥与消息摘要经过发送方的私钥加密,再经过接受方的公钥加 密,最终形成一个签名。然后介绍了公钥表和私钥表。 公钥表存储在服务器端和客户端。当且仅当客户端访问服务器时,它的公钥 才会保存在公钥表上( 只要不超过表的限制) ,而其他任何情况都不会在公钥表增加 公钥。 私钥表p r i v a t e k e y t a b l e 。存储在客户端上。它也是一个h a s h m a p 型的数据结 构,保存客户端使用过的私钥。k e y 是一个日期型数据,如2 0 0 7 0 4 1 2 ;v a l u e 是该客 6 第一章绪论 户端的私钥。 第六章测试与性能分析 为了验证本系统是否能够达到性能指标,同时发现本系统中存在的性能瓶颈, 最后起到优化本系统的目的,本系统采用以下几个方面来验证系统性能:评估系统 的能力,识别体系中的弱点,系统调优,验证稳定性、可靠性。 第七章总结与展望 这章是结束语,包括全文总结和未来工作及展望 7 电子科技大学硕士学位论文 2 1 消息中间件 第二章相关技术介绍 消息中间件( m e s s a g e - o r i e n t e dm i d d l e w a r e ,简称m o m i s ) 是通过消息的生产 与消费连接多个系统或应用的软件基础框架,它使用松散耦合的、非常灵活的方 式来集成应用程序,在存储和转发的基础上支持应用程序间数据的异步传递。消 息可以是一个请求、报表或从一个企业应用的一部分发到另一部分的事件。它通 过以下几点帮助建立分布式系统: 1 将应用接口抽象为数据描述: 2 抽象分布式系统中采纳的潜在通信传输; 3 提供可以采纳的大量的通信模式以解决不同的集成问题; 4 在大量的应用结点间使应用易于实现: 5 消除所有系统同时可利用的需求: 6 确保在一定的服务质量( q o s ) 实现事务处理。 2 1 1 消息中间件的目标 根据消息中间件的定义可以看出,它要实现的日标就是在不同平台之间通信, 实现分布式系统中可靠的、高效的数据传输【9 jn “。 1 可靠性 消息中间件要为企业提供消息服务,必须保证可靠性,即对传输的消息要确 保能从源端到达目的端,而不至于出现数据丢失的情况。 2 高效性 消息中间件要传输的消息是大量的,在保证可靠性的基础上,也要考虑传输 的效率,传输效率包括系统开销和传输时延两层含义。 3 跨平台 消息中间件要连接多个系统必须实现跨平台,否则就很难实现异种系统之间 的集成。 8 第二章相关技术介绍 2 1 2 消息中间件的一般模型 图2 - 1 消息中间件的一般模型 图2 - 1 是一个一般的消息传递方案,它也是消息中间件的本质模型。它将产生 消息的组件称为“生产者”,接收消息的组件称为“消费者”。将消息生产者和消 费者分离出来的好处在于,双方不必关心消息是如何传输的,而只要协商好消息 的格式即可。消息中间件服务提供者是整个模型的核心,对它的设计和实现是本 文的主要内容【1 1 1 。 2 1 3 消息中间件的比较 目前,m o m 产品主要有:m m 的m q s e r i e s u l ,东方通科技公司的 t o n g l i n k q | 1 4 j 等。i b m 公司的中间件产品m q s e r i e s 是一个通信系统,它可广泛地 应用在各种硬件和软件平台之间,提供可靠的、异步的一次性数据发送。这些特 性使得m q s e d c s 成为应用程序间通信的理想的基础结构,而不论这些应用程序是 在同一台机器上运行还是在由一个或多个网络分隔的不同机器上运行。而且它的 异步处理支持允许发送和接收应用程序相互分离,这样发送者就可以继续处理, 而不需要等待接收器确认其己接收到数据。实际上,在发送数据时目标应用程序 甚至不需要运行。同样,在传送数据时,可以不使用发送者和接收者之间的网络 路径。 t o n g l i n k q 是由我国东方通科技公司开发的消息中间件产品。它是一种面向分 布式应用的消息传送中间件,它为网络环境下c l i e n t s e l v c t 结构的应用系统的开发 和运行提供了灵活和易用的平台支持。t 0 n 西i n k q 提供多种通讯方式:实时传输、 可靠传输、加密传输等。在分布式的联机事务处理( o l d ) 环境中,它担当通讯资 源管理器( c o m m u n i c a t i o nr e s o u r c em a n a g e r ) 的角色,为分布式应用提供实时的、高 效的、可靠的、跨越不同操作系统、不同网络的消息传送服务;在要求可靠传输的 系统中,还可以利用t o n g l i n k q 作为一个通讯平台,用t o n g l i n k q 提供的可靠传 输功能来传递消息和文件,同时提供其他辅助功能方便系统的开发及使用。 从上面的比较可以看出,虽然消息中间件实现的目标和功能大同小异,但是 在具体实现上有很大差异,不同的厂商基于各自的开发标准和接口,因而不同系 9 电子科技大学硕士学位论文 统之间兼容性很差,旦采用某个厂商的消息中间件构建自己的系统,要改用剐 的厂商的消息中间件就需要对系统做很多的改动,并采用相应厂商的专用接口去 实现通信,这样对于企业用户来说选择的余地很小,不利于降低企业的成本,同 时也加重了应用开发者和系统维护的负担。因此,寻求一种开放的、统一的消息 中间件服务接口就很有意义。j m s a p i 接口规范正是这样一种标准,并且目前为越 来越多的消息中间件厂商所认可,这也是本课题选择j m sa p i 做为开发消息中间 件的接口规范的主要原因。 2 2x m l 技术 x m l 是w 3 c 组织于1 9 9 8 年2 月发布的标准,x m l 并不仅仅包括x m l 标记 语言,还包括了很多相关的规范,如文档格式化标准,文档显示模式定义,文档查询标 准,文档解析标准和文档链接标准等而且基于x m l 这个低层的规范,还有很多高层 的应用协议,比如开放贸易协议,s o a p 等1 1 1 。 2 2 1 x m l 相关标准 x m l 相关标准及它们的关系如图2 - 2 所示: 图2 - 2 x m l 相关标准关系 d t d 和s c h e m i a 是对文档格式进行定义的语言,就相当于数据库中我们需要定 l o 第二章相关技术介绍 义数据库模式一样,d t d 和s c h e m i a 决定了文档的内容应该是些什么类型的东西 其中d t d 是从s g m l 继承下来的,而s c h e m i a 是专业为定义x m l 文档的格式而设 计的,它们都规定了x m l 文件的逻辑结构,定义了x m l 文件中的元素,元素属性以 及它们之间的关系 c 或者p a s c a l 源程序能够执行的原因是因为存在一个对应的编译系统,脚本 语言编写的代码能够执行的原因是因为存在一个对应的解释器同样,为了对x m l 文档内容进行分析,需要一个x m l 解析器,用它来分析x m l 文档的内容是否符合 x m l 标准有两种解析方式:一种称为d o m ( d o c u m e n to b j e c tm o d e ) ,另外一种称 为s a x ( s i m p l ea p if o rx m l ) 2 2 2d o m x m l t l 6 j 将数据组织为一棵树,d o m 就是对这棵树的一个对象描述通俗的说, 就是通过整个x m l 文档,为x m l 文档在逻辑上建立一个树模型,树的节点是一个 个对象通过存取这些对象就能够存取x m l 文档的内容 2 2 2 1d o m 的基本对象 d o m t l 7 1 的基本对象有5 个:d o c u m e n t , n o d e , n o d e l i s t ,e l e m e n ta n d a t t r 如图2 - 3 : 图2 - 3 d o m 基本对象 d o c u m e n t 对象代表了整个x m l 文档,所有其它的n o d e ,都以一定的顺序包含 在d o c u m e n t 对象之内,排列成一个树开的结构,程序员可以通过遍历这棵树来得到 1 1 电子科技大学硕士学位论文 x m l 文档的所有内容,这也是对x m l 文档操作的起点通过解析x m l 源文件而得 到一个d o c u m e n t 对象,然后再来执行后续的操作 n o d e 对象是d o m 结构中最为基本的对象,代表了文档树中的一个抽象的节点 在实际使用的时候,很少会真正的用到n o d e 这个对象,而是用到诸如 e l e m e n t , a t t r , t e x t 等n o d e 对象的予对象来操作文档n o d e 对象为这些对象提供了 一个抽象的,公共的根虽然在n o & 对象中定义了对其子节点进行存取的方法,但是 有一些n o d e 子对象,比如t e x t 对象,它并不存在于节点 e l e m e n t 对象代表的是x m l 文档中的标签元素,继承于n o d e ,亦是n o d e 的最主 要的子对象在标签中可以包含有属性,因而e l e m e n t 对象中有存取其属性的方法, 而任何n o d e 中定义的方法,也可以用在e l e m e m 对象上面 a t t r 对象代表了某个标签中的属性a t t r 继承于n o d e ,但是因为a t t r 实际上是包 含在e l e m e n t 中的,它是e l e m e n t 对象的一部分,但它并不能被看作是e l e m e n t 的子 对象 2 2 2 2d o m 应用举例 下面举一个简单的例子来说明d o m 是如何来操作一个x m l 文档的 这是一个x m l 文档,也是我们要操作的对象: 把这个文档的内容解析到一个个的j a v a 对象中去供程序使用,利用j a x p 只需 几行代码就能做到首先,需要建立个解析工厂,利用这个工厂来获得一个具体的 解析器对象: d o c u m e n t b u i l d c r f a c t o r yd b f = d o c u m e n t b u i l d e r f a c t o r y n e w h s t a n c e 0 ; 这里使用d o c u m e n t b u i l d e r f a c t o r y 的目的是为了创建与具体解析器无关的程 序,当d o c u m e n t b u i l d e r f a c t o r y 类的静态方法n e w i n s t a c e 0 被调用时,它根据一个系统 变量来决定具体使用哪一个解析器,代码都是一样的所以当在不同的解析器之间 进行切换时,只需要更改系统变量的值,而不用更改任何代码这就是工厂所带来的 好处 d o c u m e n t b u i l d e rd b = d b f n e w d o c u m e n t b u i l d e r 0 ; 当获得一个工厂对象后,使用它的静态方法n e w d o c u m e n t b u i l d e r 0 方法可以获 得一个d o c u m e n t b u i l d e r 对象,这个对象代表了具体的d o m 解析器但具体是哪一 第二章相关技术介绍 种解析器,微软的或者m m 的,对于程序而言并不重要 然后,我们就可以利用这个解析器对x m l 文档进行解析了: d o c u m e n td o c = 曲p a r s e ( d :l x c m o m x m l k e y x m l ) ; d o c u m e n t b u i l d e r 的p a r s e o 方法接受了一个x m l 文档名作为输入参数,返回一 个d o c u m e n t 对象,这个d o c u m e n t 对象就代表了一个x m l 文档的树模型以后所有 的对x m l 文档的操作,都与解析器无关,直接在这个d o c u m e n t 对象上进行操作就可 以了而具体对d o c u m e n t 操作的方法,就是由d o m 所定义的对解析工厂模式见图 2 4 图2 4 解析工厂模式 使用d o c u m e n t 对象的g e t e l e m e n t b y t a g n a m e 0 方法,可以得到一个n o d e l i s t 对 象n o d e l i s t 是一个n o d e 对象的列表,一个n o d e 对象代表了一个x m l 文档中的一 个标签元素 n o d e l i s tn l = d o c g e t e l e m e n t b y t a g n a m e ( k e y ) ; 通过这样一条语句所得到的是x m l 文档中所有 标签对应的n o d e 对象 的一个列表然后,使用n o d e l i s t 对象的i t e m 0 方法来得到列表中的每一个n o d e 对 象: n o d em y _ n o d e = n 1 i t e m ( o ) ; 当一个n o d e 对象被建立之后,保存在x m l 文档中的数据就被提取出来并封装 在这个n o d e 上了,在这个例子中,要提取k e y 标签内的内容,通常会使用n o d e 对象 1 3 电子科技大学硕士学位论文 的g e t n o d e v a l u e 0 方法: s t r i n go i d k e y = m y _ n o d e g e t f i r s t c h i l d 0 g e t n o d e v a l u e 0 ; 这里还使用了一个g e t f i r s t c h i l d 0 方法来获得k e y 下面的第一个子n o d e 对象 虽然在k e y 标签下面除了文本外并没有其它子标签或者属性,但是在这里坚持使用 g e t f i r s t c h i l d 0 方法,主要和w 3 c 对d o m 的定义有关w 3 c 把标签内的文本部分也 定义成一个n o d e ,所以先要得到代表文本的那个n o d e ,才能够使用g e t n o d e v a l u e 0 来获取文本的内容 2 2 3s a x 与d o m 相比,s a x 是一种轻量型的方法在处理d o m 的时候,需要读入整个 x m l 文档,然后在内存中创建d o m 树,生成d o m 树上的每个n o d e 对象当文档比 较小的时候,这不会造成什么问题,但是一旦文档大起来,处理d o m 就会变得相当费 时费力特别是其对于内存的需求,也将是成倍的增长,以至于某些应用中使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ISO 15877-32009Amd 22021 冷热水装置用塑料管道系统.氯化聚氯乙烯(PVC-C).第3部分配件.修改件2标准立项发展报告
- 2026年电工证《低压电工实操》考试题库及答案
- 乡村防汛知识考卷及答案要点
- 2026麻醉科产科麻醉镇痛试题及答案(产科镇痛版)
- 流程培训检验题目及答案解析
- 高中物理必修第一册3.2
- 行政管理领域试题及答案详情
- 物业法规培训练习题及答案
- 山东登高证考试常见试题与答案
- 浦东机场复训测试题与答案解析
- 反假考试培训提纲
- SMETA确保员工合法工作权的核查程序-SEDEX验厂专用文件
- 2025年山西省建设工程专业高级职称评审考试(建筑工程管理)历年参考题库含答案详解(5卷)
- 2025-2030中国养老服务机构连锁化扩张障碍及支付体系完善建议报告
- 学校食堂管理课件
- 肉桂主要化学成分提取与抗衰老生物活性关系研究
- 肌肉注射的试题及答案
- 香港繁体合同协议
- 硬质合金生产工艺流程
- AQ-7015-2018-氨制冷企业安全规范
- 新人教版10.2电能能量守恒定律课件(43张)
评论
0/150
提交评论