(计算机软件与理论专业论文)基于jms消息中间件的研究与实现.pdf_第1页
(计算机软件与理论专业论文)基于jms消息中间件的研究与实现.pdf_第2页
(计算机软件与理论专业论文)基于jms消息中间件的研究与实现.pdf_第3页
(计算机软件与理论专业论文)基于jms消息中间件的研究与实现.pdf_第4页
(计算机软件与理论专业论文)基于jms消息中间件的研究与实现.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机软件与理论专业论文)基于jms消息中间件的研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 现如今中间件的应用遍布各个领域,而且中间件的种类日益繁多,其中消 息中间件所扮演的角色是越来越重要。消息中间件采用客户端和服务端进行松 散耦合的异步通信方式,发送程序和接收程序是异步的,两者无需直接通信, 生命周期也可以不必相同,真正达到了分布式资源的集中共享。本文的主要工 作就是设计并实现一个完全符合j m s 规范的消息中间件产品g u a n j m s 。 首先,本文介绍了j m s 在国内外的研究进展及应用现状,紧接着介绍了j m s 中的一些j 2 e e 技术,然后在上述相关理论的基础上,引入了单例、抽象工厂、 适配器和命令等设计模式,并结合j m s 规范给出了系统的整体架构设计。 g u a n j m s 建立了发布订阅和点到点的两种消息模式,实现了全部的j m s 标准 a p i ,提供了消息持久化、消息过滤和j n d i ( 名字与目录服务) ,同时还实现了消 息监听、多线程管理和同志记录等附加功能,极大地完善了消息中问件的功能 性服务。同时,针对传统j m s 消息过滤的算法进行了改进和测试,最后,把自 己设计的消息中间件同一些其他j m s 商业产品进行了全面的性能比较,并将其 部署在企业应用系统中以此来进一步地进行实践测试,测试结果表明系统在性 能上确实存在着一定的优势。 关键词:消息中间件:消息过滤;j m s ;设计模式 ab s t r a c t a b s t r a c t n o w , v a r i e t y o f m i d d l e w a r ei s s p r e a d i n g o v e ra l lt h ef i e l d s w i d e l y e s p e c i a l l y , m e s s a g e o r i e n t e dm i d d l e w a r e i s p l a ym o r ea n dm o r ei m p o r t a n t r o l ei nt h e a p p l i c a t i o n m e s s a g e o i e n t e d m i d d l e w a r e a d o p t sa s y n c h r o n o u s c o m m u n i c a t i o nm e t h o db yw h i c ht h ec l i e n ta n ds e r v e ri sl o o s e l yc o u p l e d t h es e n d i n g p r o c e d u r ea n dr e c e i v i n gp r o c e d u r ea r ea s y n c h r o n o u sc o m m u n i c a t i o nt o o ,s ot h e yc a n h a v ed i f f e r e n tl i f ec y l ea n dd o n tn e e dd i r e c tc o m m u n i c a t i o ne a c ho t h e r t h e nt h e r e u s l ti sc o m p l e t e l ys h a r i n gt h ed i s t r i b u t e dr e s o u r c e t h ec o r ew o r ko fm yt h e s i si s t od e s i g na n di m p l e m e n t m e s s a g e o r i e n t e dp r o d u c tu pt os t a n d a r dj m sw h i c h n a m e dg u a n j m s f i r s t ,b yc o m p a r i n gt h ed o m e s t i ca n df o r e i g nf a c t s ,t h et h e s i sd e s c r i b l e st h ej m s r e s e a r c hp r o g r e s sa n dc u r r e n ts t a t u s ,f o l l o w e db yi n t r o d u c t i o nt ot h ej m si n v o l v i n g s o m eo ft h ej 2 e et e c h n o l o g i e s ,w h i c hc o n t a i nd e s i n gp a t t e r ns u c ha sa b s t r a c tf a c t o r y a n da d a p t e rs oo n t h e ni t g i v e st h et h eo v e r a l ls y s t e ma r c h i t e c t u r e g u a n j m s e s t a b l i s h e st w ot r a n s f e rm o d e :p u b l i s h s u b s c r i b ea n dp o i n tt op o i n t ;i m p l e m e n t sa l lt h e j m sa p i ;p r o v i d e st h em e s s a g ep e r s i s t e n c e ,m e s s a g ef i l t e rt e c h n o l o g ya n dj n d i a n ds oo n t h ea b o v ef u n c t i o n sg r e a t l yi m p r o v et h em i d d l e w a r es e r v i c e s m e a n w h i l e , t h et r a d i t i o n a lj m sm e s s a g ef i l t e ra l g o r i t h mh a sb e e ni m p r o v e da n dt e s t e d f i n a l l y , b y c o m p a r i n gg u a n j m sa n do t h e rj m s c o m m e r c i a lp r o d u c t sc o m p r e h e n s i v e l y , t h er e s u l t s h o w sc e r t a i na d v a n t a g e k e yw o r d s :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 e s s a g ef i l t e r ;j m s ;d e s i g np a a e m l i 学位论文独创性卢明 学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得南昌大学或其他教育 机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示谢意。 学僦文储捌手写凄坳签字脚冽口年厂月阢日 学位论文版权使用授权书 本学位论文作者完全了解南昌大学有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅 和借阅。本人授权南昌大学可以将学位论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名( 手写) 渤肛 签字日期办年月7v 日 导师签名c 玛:司炉搀 签字日期:孔肼, 月纱日 第1 章绪论 1 1 引言 第1 章绪论 随着互连网的扩大化和复杂化,尤其是最近移动网络3 g 技术的发展,企业 的信息系统架构大部分都是基于三层甚至多层的分布式体系结构。丽分布式的 体系结构通常要求软硬件能够尽量统一,尽可能做到平台无关性。所以为了能 够整合异构系统和对分布式系统资源的共享,就迫切需要一种独立于计算机硬 件平台和操作系统的技术,中间件技术也就是在这种大环境下应运而生。消息 中间件的英文全称为m e s s a g e o r i e n t e dm i d d l e w a r e ,它作为屏蔽了底层细节的 中间层软件,为分布式应用中的一些诸如创建消息、发送消息、接受消息等操 作提供了简单通用的操作方法。 埘s 的英文全称为j a v am e s s a g es e r v i c e ,是s u n 公司为了统一各种消息中间 件而制定的接口规范,它是一种与服务提供商和硬件平台无关的接口协议。因 为使用j m s 后降低了跨平台和异构系统整合的复杂性,企业应用也因此大大降低 了开发成本,并获得了广泛的商业应用。本文主要是认真研究j m s 规范和体系架 构,并对j m s 传统的消息过滤算法进行了研究和改进,设计并实现了j m s 消息中 间件,最后并对其进行了实践的应用和测试。 1 2 国内外的研究及应用现状 随着各个行业办公的自动化和信息化,中闽件软件的产业化也随之大规模 地发展,c o r b a ,d o m ,r m i 9 】l l l 】【1 5 j 等一些r p c 技术也已经广泛地应用于各 个领域,但是对于解决高分布式系统也显示出了其局限性: 1 客户端和服务端的通信方式为同步通信,也就是说当客户端发出请求后, 必须等待服务端对象完成处理后方可继续执行,这明显浪费了大量的客户端资 源,势必会影响工作效率; 2 客户端对象和服务端对象的逻辑处理和生命周期紧密藕合,两者都必须处 于活动状态才能有效运转。万一因网络故障或系统崩溃导致客户端迟迟等待服 第1 章绪论 务端对象,那么客户端将接受到异常错误信息而不能有效完成工作; 3 消息收发机制的可靠性和安全性相对较弱。 面向消息的中间件能够解决上述其他中间件所产生的问题,面向消息中间 件能够提供异步通信传输模式,消息发送者把要发送的消息传输到服务提供者 后,无需理会也不需等待确认收到命令,就可继续处理其他请求,这种异步通 信方式明显松散了服务器和客户端的业务耦合,提供了系统的可扩充性;在可 靠性方面,消息中间件可以通过队列或者主题的方式来存储消息,可以设置消 息在服务器上的存留时间从而保证消息的相对持久性,这也提高了消息传输的 可靠性。 目前,消息中间件广泛应用于从银行、电信、政府、物流到交通运输、文 教卫生等十几个行业,可谓无处不在。有代表性的消息中间件是:微软的m s m q 、 东方通科技的t o n g l i n k q 。 1 m s m q m s m q 的英文全称为m i c r o s o f tm e s s a g eq u e u e 即微软消息队列,是在异 构分布式环境下实现相互通信的一种异步传输模式,消息发送者先把自己要发 送的消息发送到系统容器当中,然后再把它转到一个系统公共队列 ( m e s s a g eq u e u e ) 上,本地或者异地的消息接受者再从公共的消息队列上进行消 息接受。使用m s m q 可以在微软的n e t 平台上进行操作,可以创建消息队列、 管理消息队列、发送或者接受异步消息等。总的来说m s m q 能够在可靠性不高 的网络上建立可靠的应用,具有高度集成和事务处理等特点,同时也使消息通 信双方能够在不同的物理平台上进行通信成为现判引。 2 t o n g l i n k q t o n g l l n k q u 3 j 的产品是由国内软件公司东方通公司开发的消息中间件产 品,作为一个标准化、适合中国应用环境的消息中间件,t o n g l i n k q 具有高效 可靠的传输功能、具有事件代理机制、高效的请求队列和良好的可配置性。 t o n g l i n k q 是基于消息队列的,所以能够保证可靠传输;使用t o n g l i n k q 的 客户可以将一个完整的操作定义为一种事件,当事件发生时,可以根据事件驱 动相应的应用程序来进行处理;t o n g l i n k q 具有实时监控、动态配置、日志机 制以及远程管理,所以具有良好的可配置性。除此之外,t o n g l i n k q 也提供了 多层次的安全管理,包括节点间的安全认证( c a ) 、应用程序的安全认证和通信 数据加密等。 2 第1 章绪论 1 3 课题的目的、意义及工作内容 1 3 1 目的和意义 j m s 规范的提出首先由s u n 公司提出,并最终得到很多大型厂商的认可和 参与,并进行了有效的实现和应用。经过认真分析这些开源的消息中间件产品, 也发现了其中确实也存在一些不足之处: 1 系统运行效率较低:虽然j m s 的规范实现是基于j a v a 语言的,而且j a v a 语言不断更新j d k 的版本,做了很多改进,但整体效率还是相对较低。 2 不支持移动设备:随着移动网络3 g 的兴起,如何使j m s 支持移动设备的 应用,很值得研究。 3 消息匹配效率较低:j m s 规范中的传统消息匹配效率较低,不适合用于大 数据量的并发处理,所以就有必要对消息的匹配算法加以改进。 4 安全机制不完善和语言局限性:如何能够安全传输绝密消息对j m s 而讲 也是至关重要,如何对消息的使用者进行授权处理都是迫切要考虑的问题。 本文就是基于上述四点,设计并实现了基于j m s 规范的消息中间件,并且 对于传统消息过滤算法进行有效的优化改进,这对于大数据量的并发传输是个 很重要的改进。 1 3 2 工作内容及论文组织结构 本文的主要工作是综合运用一系列j 2 e e 技术,包括r m i 、j n d i 和j d b c 等,设计一个符合j m s 规范的消息中间件系统,主要研究j m s 消息中间件的体 系结构、消息传递模式、消息匹配算法、持久化等问题,设计实现j m s 消息中 间件g u a n j m s 。 全文共分为7 章: 第1 章是绪论,叙述了研究背景、国内外的研究现状以及课题的目的、意 义和内容。 第2 章是消息中间件与j m s ,对j m s 进行了详细的说明,包括j m s 规范、 体系结构、内部对象关系、消息模式和消息结构,并对j m s 的a p i 进行了详细 介绍。 第1 章绪论 第3 章叙述了j m s 消息中间件的相关技术,包括x m l 、j d b c 、r m i 、j n d i 等。 第4 章是对j m s 的消息过滤机制进行综述,提出了一种改进的基于j m s 的 消息过滤算法,并通过实验分析对比,证明了改进的消息过滤算法具有较高的 匹配效率。 第5 章是本文的核心部分,提出了基于j m s 消息中间件g u a n j m s 的设计模 型,实现了j m s 的基本标准a p i ,提供了消息持久化功能,提供了名字与目录 服务:同时在服务器端实现了消息监听、多线程管理和日志产生等机制,极大地 完善和丰富了消息中间件的功能。同时把第4 章提出的改进的过滤算法应用到 实践中,对消息过滤机制的应用进行了实践的检验。 第6 章是本消息中间件在实际业务系统中的应用,江西省质量监督系统是 由多级行政区域构成的系统,包括省、市和县各级监督站的应用,每个监督站 都有自己的独特的应用需求体系,但也经常需要进行信息交换,所以通过本消 息中间件可以达到信息共享和实时通信,这不仅是对本消息中间件的实践上的 测试,而且在经济上也取得了可观的效益。 第7 章总结本文的工作,指出系统下一步需要从s o a 整合和移动3 g 等多 个方面进行进一步的改进。 4 第2 章消息中间什与j m s 2 1j m s 定义 第2 章消息中间件与j m s j m s 的英文全称为j a v am e s s a g es e r v i c e ,是客户端访问企业消息系统的标 准规范a p i ,是s u n 公司为异构系统整合提供的一种架构协议。它使不同的应 用程序进行消息交换成为可能,使得j a v a 应用能够和i b mm q s e r i e s 、m i c r o s o f t m s m q 及纯j a v a 的s o n i c m q 等异构的消息中间件进行通信。从j m s 规范的提 出到j m s 规范的商讨,到最终j m s 规范的确立和广泛应用的这个过程中,很多 大型厂商,像i b m 、o r a c l e 等都积极参与了这个规范化的过程,这也正是j m s 如今成为当下中间件核心焦点的主要原因,当然j m s 规范也考虑了不同需求的 可扩充性,有很多可选内容,这些可选内容可以由中间件实现者自己提供 【6 】f 8 1l l l o 。 j m s 通过提供创建消息、发送消息、接收消息和读取消息等标准服务来简 化j m s 操作。通过j m sa p i ,客户不需要了解不同消息产品的使用方法,而可 以使用统一的j m sa p i 来操作,同时j m s 是建立在j a v a 技术上的,不仅具有j a v a 语言的所有优点,而且可以和其他j 2 e e 技术进行协作应用。这就最大可能地提 高了消息应用的可移植性和可扩充性。 因此把j m s 简单理解为一组消息接口和相关语义,一种消息应用的标准接 口规范:实现异构消息中间件的整合,即可移植性;具有j a v a 语言的跨平台性 当然也有j a v a 语言局限性即语言相关性。 2 2j m s 体系结构 在j m s 的体系结构中主要包括3 部分,客户端程序、j m s 消息a p i 和j m s 服务提供者。处于分布式环境下的客户端程序可以通过j m s 消息a p i 进行通信, 而j m sa p i 对实现进行了封装,所以客户端不需要了解底层机制就可以实现信 息交换,所以服务对客户端是透明的,同时也增加了系统的可移植性,而j m s 服 务提供者主要负责双方通信的底层细节,提供j n d i 服务、r m i 服务和数据持久 第2 章消息中间件与j m s 化机制等重要的基础服务。 j m s 的体系结构如图2 1 所示。 图2 1j m s 的体系结构图 完整的j m s 的应用体系主要有以下几个部分组成: 1 ) j m s 消,皂, ( j m s m e s s a g e ) :客户端通信的数据抽象,消息可以通过解析成 x m l 文件来实现有效传输。 2 ) j m s 提供者( j m s p r o v i d e r ) :负责处理信息通信的底层细节,管理配置受管 对象的生命周期,实现j n d i 、r m i 和消息持久化等重要服务。 3 1 j m s 客户端( j m s c l i e n t ) :通过j m sa p i 来发送或者接受消息,客户端的地 理位置没有任何限制要求。 4 ) j m s 消息消费者( j m s c o n s u m e r ) :消息接受的客户端对象,和消息发送者 是对应合作关系。 5 ) j m s 消息发送者( j m s p r o d u c e r ) :消息发送的客户端对象,和消息消费者 是对应的合作关系。 2 3 j m s 内部对象关系 j m s 的内部对象组成了一个j m s 基本构件,也是j m s 服务提供者管理的受 管对象,其生命周期由服务提供者来管理维护。主要有以下内部对象: 6 第2 章消息中间什与j m s c o n n e c t i o n f a c t o r y :是客户端和服务提供者的连接会话对象,采用工厂方法 的设计模式,保证了连接的唯一性,同时还封装了服务运行所需的主机端口地 址和客户身份验证所需要的i d 号等。 d e s t i n a t i o n :是客户发送消息或确认消息的目的地址的抽象。创建消息时,会 指定一个目标地址参数来对消息进行设置,是消息发送者和消息接受者会话的 虚拟通道。在点到点发送模式中,目的地址被封装为队列来表示,在发布订阅 模式中,目的地址被封装为为t o p i c ( 主题) 来表示。 连接( c o n n e c t i o n ) :是客户端对j m s 服务提供者的会话请求,支持并发处理。 会话( s e s s i o n ) :发送者和消费者消息通信的线程会话,连接对象、消息生产 者和消息消费者由会话创建维护。 消息生产者( m e s s a g e p r o d u c e r ) :由s e s s i o n 对象创建的用来发送消息的对象, 该对象和消息消费者对象协作处理完成消息的转发,不过不支持并发。 消息消费者( m e s s a g e c o n s u m e r ) :由s e s s i o n 对象创建的用来接收消息的对象, 该对象和消息生产者对象协作处理完成消息的转发,不过也不支持并发。 消,自! , ( m e s s a g e ) :是客户端通信的抽象媒介,最终会通过x m l 文件结构来进 行通信。 上述的这些j m s 内部对象图如图2 2 所示。 7 第2 章消息中问仲与j m s 图2 - 2j m s 内部对象关系图 2 4 j m s 的消息传递模式 j m s 的消息传递模式分为发布订阅模型和点到点消息传递模式。 1 发布订阅模型 发布订阅模型是通过将消息内容分解成主题来发布订阅消息,这样主题就 使得订阅者和发布者松散耦合,双方不需要进行直接通信就可以传递接受消息。 其中发布者通过匿名动态方式发布消息到自己的主题,订阅者再通过自己的订 阅要求从主题订阅消息。 由此可见,发布者和订阅者是一对多的关系,在时间上也存在依赖,订阅 者只能通过主题来订阅发布者已经发布的消息。此模型还有一个可以设置消息 在服务器上的存储时间的参数,这样当系统因意外因素崩溃的情况下,订阅者 依然可以通过主题订阅服务器上的消息副本【2 8 】。 8 第2 章消息中间件与j m s 2 点到点消息传递模式 点到点消息传递模式主要是通过封装目的地址来建立一个消息队列,其中 消息队列作为消息的传输中介。消息服务提供者会首先设置好消息队列,队列 的数据结构遵守先进先出原则,当发送方发送消息到队列上,如果消费者没有 接受,消息一直会存储在队列上,直到消息消费者反馈确认收到消息,消息才 会从队列上删除。 由此可见,不同的发送方可以发送到相同的队列,发送者和接收者的关系 不像发布订阅模式存在时间上的依赖,消息发送者和消息接收者不需要同时处 于活动状态,只要队列一直处于活动状态就可以完成消息的发送和接受。 2 5j m s 的消息结构 j m s 系统最终目的就是为了发送和接受消息,所以消息当然是j m s 规范中 最为核心的部分。消息在j m s 规范当中拥有多种消息类型,主要是为了满足不 同的应用需求,同时所有的基于j m s 的应用系统中都是通过消息作为媒介来进 行消息通讯。 一个j m s 标准消息包括3 个核心部分:消息头( h e a d e r ) 、消息属性( p r o p e r t i e s ) 和消息正文( b o d y ) ,其中消息头提供了一组标准键值映射,可让客户端用于标识 地址信息;消息属性补充了消息头的不足,这样可以通过消息属性让消息选择 器来对消费者感兴趣的消息进行过滤;消息正文也称为消息体,是消息的主体 内容,其中正文中的数据结构可以由消息类型来设置。如图2 3 所示。 图2 - 3j m s 的消恩结构图 ( 1 ) 消息头 消息在发送前会自动将消息的属性进行设置,可以通过方法 s e t j m s h e a d e r n a m e ( ) 和g e t j m s h e a d e m a m e 0 进行设置和获取。消息头包含了很多 的基本信息属性,主要有: 1 ) j m s m e s s a g e l d :类型s t r i n g ,唯一标识提供者发送的每一条消息。 9 第2 章消息中间件与j m s 2 ) j m s d e l i v e r y m o d e :类型i n t ,通常用于消息是否要进行持久化,非持久性消 息在应用程序或者系统出故障时将会丢失,而持久性消息不会丢失。 3 ) j m s d e s t i n a t i o n :类型为d e s t i n a t i o n ,通常用于提供消息目的地地址,在发布 订阅模式和点对点模式中对应t o p i c 和q u e u e 。 4 ) j m s t i m e s t a m p :类型为l o n g ,通常用于告知服务器消息发送的确切时间。 5 ) j m s t y p e :类型为s t r i n g ,消息类型,不同的消息类型有不同的消息主体内 容。 6 ) j m s r e d e l i v e r e d :通常用来说明消息是否要进行重新转发。 7 ) j m s p r i o r i t y :类型为i n t ,并发时有很多消息要进行发送,所以设置了优先级 属性,优先级从0 - 9 越来越高。 8 ) j m s r e p l y t o :类型为d e s t i n a t i o n ,通常用于对收到消息的确认回复,代表 目的地址对象的引用。 9 ) j m s c o r r e l a t i o n l d :类型为s t r i n g ,通常用于消息应答机制的源消息源的相 关i d 标识。 1 0 ) j m s e x p i r a t i o n :类型为l o n g ,消息持久化机制中的过期时间,0 表示永远不 过期。 ( 2 ) 消息属性 消息属性f 2 3 】的数据结构是一个m a p 映射的名值对,消息属性对于消息选择 器至关重要,它包含了消息消费者订阅的分支消息条件,这些分支条件可以作 为消息过滤的条件依据。为了充分发挥消息属性的作用,j m s 规范可以在消息 头上增加新的属性。这些新的属性包括3 个类型:业务需求属性、规范的可选 属性和j m s 消息服务提供者的专有属性。其中业务需求属性是根据自己的业务 需求来定制的新的属性;规范的可选属性主要是j m s 规范定义的但不是必须要 用到的;j m s 消息服务提供者的专有属性是指j m s 客户端属性和本地客户端所 需要用到的提供者属性的融合属性。 ( 3 ) 消息正文 j m s 设置了六类消息类型:m e s s a g e 、t e x t m e s s a g e 、s t r e a m m e s s a g e 、 m a p m e s s a g e 、o b j e c t m e s s a g e 和b y t e s m e s s a g e ,消息类型的不同所加载的消息正 文数据也有所不同。 1 m e s s g a e :最简单的基本消息类,它是其他5 类消息的超类,只包括消息头 和消息属性,消息正文不在其包括范围内。 1 0 第2 章消息中间仆与j m s 2 t e x t m e s s g a e :文本消息,j a v a 1 a n g s t r i n g 对象,如各种配置文件的属性内容 竺 寸o 3 s t r e a m m e s s a g e :j a v a 规范中的输入输出流消息,是对由j a v a 原始类型组成 的消息正文进行加载。 4 m a p m e s s g a e :映射消息,装载的消息正文是一组名一值对。 5 o b j e c t m e s a s g e :对象消息,名一值对的映射集合,是s t r i n g 对象对应任何j a v a 基本类型的映射集合。 6 b y t e s m e s s g a e :字节流消息,对由字节数组类型组成的消息正文进行装载。 ( 4 ) 消息选择器 消息使用者通过使用消息选择器设置条件表达式,并匹配消息头的消息属 性,来进行消息的选择和接受。其中条件表达式要符合s q l 9 2 标准【2 4 】。例如 s t r i n gc r i t e r i a = ”c u s t o m e r = g u a n ”; t o p i c s u b s c r i b e rt s u b s c r i b e r = t s c r e a t e s u b s c r i b e r ( m y t o p i c ,c r i t e r i a ,f a l s e ) ; 通过设置条件表达式c r i t e r i a 从主题中接收c u s t o m e r = g u a n 的消息 2 6j m s a p i 编程模型 j m s 定义了封装消息的高级操作的接口,同时为了更加快捷安全地进行消 息操作,j m s 又将这些接口分为三类:消息类、j m s 控制类和消息异常类【2 0 】。 其中消息类己在上述章节进行了说明,接下来重点说明下j m s 控制类和消息异 常类。 ( 1 ) j m s 控制类 1 c o n n e c t i o n f a c t o r y :采用工厂设计模式创建c o n n e c t i o n 的受管对象的连接。 2 c o n n e c t i o n :客户端和消息服务提供者的活动连接。 3 d e s t i n a t i o n :消息目的地地址的抽象,包括消息的来源地和消息的发送地, 在基于主题的模式中,目标地址对应主题:在基于队列的发送模式中,目标地 址对应队列 4 s e s s i o n :消息发送和消息接受的连接会话,在并发和多线程环境下,可以 为每个客户端的请求创建对应的线程会话。 5 m e s s a g e p r o d u c e r :消息生产者,由会话进行创建,并发送消息。 6 m e s s a g e c o n s u m e r :消息消费者,由会话创建,用于接收消息。 第2 章消息中问什与j m s 表2 - 1 展示了j m s 高级接口和特定域的接口关系 表2 - 1 m s 高级接口利特定域的接口关系表 高级接口 p t p 域p u b s u b 域 c o n n e c t i o n f a c t o r yq u e u e c o n n e c t i o n f a c t o r yt o p i c c o n n e c t i o n f a c t o r y c o n n e c t i o nq u e u e c o n n e c t i o nt o p i c c o n n e c ti o n d e s ti n a t i o nq u e u et o p i c s e s s i o n q u e u e s e s si o nt o p i c s e s s i o n m e s s a g e p r o d u c e rq u e u e s e n d e rt o p i c p u b li s h e r m e s s a g e c o n s u m e r q u e u e r e c e i v e rt o p i c s u b s c r i b e r q u e u e b r o w s e r ( 2 ) 消息异常类 在j m s 中,j m s e x c e p t i o n 是所有异常的根类,除j m s e x c e p t i o n 之外,j m s 还定义了其它一些标准的j m s 异常,例如 i l l e g a l s t a t e e x c e p t i o n ,i n v a l i d c l i e n t l d e x c e p t i o n ,i n v a l i d d e s t i n a t i o n e x c e p t i o n ,i l l v a l i d s e l e c t o r e x c e p t i o n ,j m s s e c u r i t y e x c e p t i o n ,m e s s a g e e o f e x c e p t i o n 等。在指定的 情况下,这些异常将被抛出。 j m s 异常类提供了以下信息: 1 通过g e t m e s s a g e o 方法得到标准异常信息,异常信息用字符串对象s t r i n g 来表示。 2 消息服务提供者指定的错误代码。 3 其他异常的相关信息。 2 7 本章小结 本章主要介绍了涉及到消息中间件的有关j m s 的一些基础知识,包括j m s 定义、j m s 体系结构、j m s 内部对象关系、j m s 的消息传递模式和j m s 消息数 据结构等。其中j m s 定义了消息操作的标准接口;j m s 的体系结构包括客户端、 消息a p i 和消息服务提供者;j m s 分为点对点消息传递模式和发布订阅模式。 1 2 第3 章基于j m s 消息中间什的相关技术 第3 章基于j m s 消息中间件的相关技术 3 1x m l 在本消息中间件中,为方便消息的配置管理和灵活定制,消息在程序中的 面向对象的结构会最终被转化成以x m l 语言表示的消息结构,因为x m l 语言 是基于内容的,而与平台协议无关,所以非常适合异构系统间的信息交换,这 也是本消息中间件采用x m l 处理的主要原因【2 4 】。 ( 1 ) x m l 定义 x m l 的英文全称为e x t e n s i b l em a r k u pl a n g u a g e ,是一种可以根据自己的业 务需求来定制自己的业务标签的元标记语言。元标记昂突出的特点就在于满足 了自己的业务需求,例如一个餐厅可以通过 等自己的专门 标记来说明自己的业务,而学校可以通过 等标记来体 现自己的需求。总之,只要是符合w 3 c 规定的x m l 命名规则的都可以进行x m l 标记,这样也就满足了不同的应用程序开发。而与网络中平常使用的h t m l 比 较,h t m l 的标记是特有的标汜,是一种预定义语言,不同的应用程序_ 刀:发使 用统一的标记,而不像x m l 是基于内容需求的技术。而且x m l 是完全的a s c i i 文本文件,而这种类型的文件的安全系数较高,为保证消息交换的数据安全提 供了基础保障【2 5 】。 ( 2 ) x m l 文档 x m l 文档主要包括指定标记语法规则的d t d 和x m l 文本内容。其中d t d 的英文全称为d o c u m e n tt y p ed e f i n i t i o n ,主要是针对内容语法限制的定义和内容 文本是怎么组织的。比方说d t d 规定了 标记必须包含子标记 ,那 么在x m l 文档里必须要这样去组织处理。 可以明显看出d t d 是保证x m l 文档有效性的标准,通过x m l 文档和d t d 的语法约束比较,就可以看出,如果文档符合d t d 规定的约束规则,那么文档 就是有效文档,反之是无效文档。 ( 3 ) x m l 的展示 在使用网络浏览网页的时候,经常会出现诸如限制浏览器的类型和显示器 第3 章基- fj m s 消息中间 :,| :的相关技术 的分辨率的提示信息,就其主要原因就是因为网页把内容和展现样式高耦合了, 而x m l 可以定义信息内容却没有要求定义信息该如何展示,而x m l 内容的展 示是通过x s l ( x m ls t y l el a n g u a g e ) 看t lc s s ( c a s c a d i n gs t y l es h e e t s 层叠样式表) 来实现的。这样的好处就是把内容和样式分离开来,开发者就可以把重点集中 在需求的内容上,大大提高了网站的可维护性和可伸缩性。 ( 4 ) 获取x m l 文档内容 x s l t 的英文全称为x m l s t y l e s h e e tl a n g u a g et r a n s f o r m a t i o n 。假如出现一 种情况,一个应用开发者根据自己的业务需求设计了自己的业务x m l 文档,而 此应用要和另外的应用进行信息通信,可是另一个应用不识别此x m l 文档。那 么在这种情况下,x s l t 就可以从已经定义好的x m l 文档解析出另一个应用所 需要的数据,而且组成的这种数据格式是多样的,可以是h t m l ,也可以是各 种不同的脚本。 ( 5 ) x m ld o m 模型 x m ld o m 的英文全称为d o c u m e n to b j e c tm o d e l ,是与平台、语- h 无关的 标准模型,该模型是通过d o m 解析算法扫描整个x m l 文档,把x m l 文档中 的所有标记和属性转化成对象模型来展示,层层解析完毕后就会最终转化成一 个包含有上下文的对象树,因为对象树最终是存储在内存中,这样就可以在内 存中高效地对文档进行遍历。其中组织w 3 c 也专门定义了a p i 来说明如何实现 属性、方法和事件等内容。解析完毕后的对象树主要通过4 个类来表示,分别 是整个树对象的d o c 、包含属性和子节点的元素对象e l e m e n t 、不包含子节点和 属性的节点n o t e 和简单的文本t e x t 2 5 】【2 6 1 。 3 2r m i 简介 r m i 的英文全称为r e m o t em e t h o di n v o c a t i o n 是s u n 公司为解决分布式环 境下资源的调用问题而出现的远程过程调用接口体系,可以使j a v a 开发人员在 不同的地方通过网络进行协调分布编程和部署工作。 顾名思义,r m i 的核心宗旨就是尽最大努力简化分布式远程接口对象的调 用操作,支持存放在不同地址空间的程序对象间通信,最终实现远程对象之问 的无缝透明的远程调用,其中分布式对象可以是o b j e c t 类的对象也可是实现了 r m i 的简单的封装程序。因为r m i 是完全通过j a v a 语言实现,因此r m i 也具 1 4 第3 章基- j - j m s 消息中间f ,l :的相关技术 备j a v a 语言的所有优点1 2 。 r m i 能让客户端和远程端进行远程通信,主要是采用了j a v a 远程消息交换 协议j r m p ( j a v ar e m o t em e s s a g i n gp r o t o c 0 1 ) ,此协议是有关远程对象服务的协议。 所以支持r m i 开发的任何应用系统都可以部署在具有j a v a 运行环境的平台上。 在和其他j 2 e e 技术的融合问题上,r m i 也展现了其架构的可扩充性。r m i 可与j n d i 融合来建立新旧系统的连接通信;r m i 与j d b c 技术结合可以使r m i 实现对数据库的访问。 本系统的底层通信协议采用r m i 技术,来实现分布式环境下的客户端和服 务端的通信。通过r m i ,j n d i 服务、上下文对象、和所有受管对象的调用对用 户都完全透明。r m i 层次结构图如图3 1 所示。 客户端服务端 tt s t u b s ( 占位 s k e l e t o n s 程序)( 骨干网) tt r e m o t er e f e r e n c el a y e r ( 远程引用层) 工工 t r an s p o r tl a y e r t r a n s p o r tl a y e r ( 传输层)( 传输层) 图3 1r m i 层次结构图 从r m i 层次结构分析可得,一个j 下常工作的r m i 系统包括远程服务接口、 远程服务接口具体实现、r m i 编译程序编译的s t u b ( 占位程序) 和s k e l e t o n ( 骨干) 、 运行远程服务的远程服务器和客户端程序等。 r m i 工作流程:客户端对象发送方法调用,首先s t u b 接受方法调用对调用 进行封装解析再垂直传送给远程引用层,远程引用层也对方法调用进行专门的 封装解析,然后再经端到端的传输层,通过s k e l e t o n 的还原解析,最后到达服务 器端。服务器处理完客户端的请求后,把返回结果层层向下,再次经过远程引 用层、服务端的传输层最后再次通过客户端的代理s t u b 对象的解析,再向上传 第3 章基于j m s 消息中问件的相n 父技术 输给客户端应用程序。 通过j n d i 的r m i 常用操作: v o i db i n d ( s t r i n gs n a m e o b j e c to b j e c t ) :把名称绑定到对象关联的过程: v o i dr e b i n d ( s t r i n gs m e ,o b j e c to t ) :把对象同一个已经存在的名称重新绑定; v o i du n b i n d ( s t r i n gs n a m e ) - 释放当前目录的对象; v o i dl o o k u p ( s t r i n gs n a m e ,o b j e c to b j e c t ) 查找总目录的一个对象; v o i dr e n a m e ( s t r i n gs o m e ,s t r i n gs n e w ) 重新命名绑定的修改对象名称; 3 3j d b c 简介 j d b c 的英文全称为j a v ad a t ab a s ec o n n e c t i v i t y , 是s u n 公司为了让开发人 员更关注自己的业务应用而非底层各种不同数据库的切换连接而形成的一套数 据库应用编程接口a p i ,它对使用者来说是透明的,因为j a v a 语言的特点就是平 台无关性、安全、易于使用,同时因为j d b ca p i 对s q l 语言的来说是一种自 然的标准接口,是对s q l 抽织概念的封装,所以有了j d b c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论