(计算机应用技术专业论文)jms技术的研究及应用.pdf_第1页
(计算机应用技术专业论文)jms技术的研究及应用.pdf_第2页
(计算机应用技术专业论文)jms技术的研究及应用.pdf_第3页
(计算机应用技术专业论文)jms技术的研究及应用.pdf_第4页
(计算机应用技术专业论文)jms技术的研究及应用.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)jms技术的研究及应用.pdf.pdf 免费下载

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

文档简介

西安建筑科技大学硕士学位论文 j m s 技术的研究及应用 专业:计算机科学及应用 硕士生:占艳 指导教师:赵文静教授 摘要 j m s 是由s u n 公司开发的一个开放性的编程接口,提供了一套创建、发送、接 收和订阅企业级消息的j a v a 编程方法。与传统消息技术如r m i 相比较,j m s 促进 了分布式计算环境中各个组件之间可靠的异步通信,可以用来构建松散耦合的消息 系统,从而大大简化了企业应用的开发过程。 本论文首先对j m s 技术现状进行了研究分析并阐述了采用j m s 技术实现企业 间通信的意义。通过对j m s 相关技术的深入研究,提出了基于j m s 规范的客户端 应用的设计思想。结合实际的应用系统给出了消息通知子系统的功能设计和详细设 计,并采用点对点消息通信模型和发布订阅消息通信模型实现了消息通知子系统。 本论文还针对消息通知予系统开发过程中遇到的消息接收方对消息过滤的问题,提 出了采用消息选择器对消息选择性接收的解决方案,并且该方案在完成的系统中已 经实现。 最后本文对j 2 e e l 3 1 提供的j m s 服务和w e b l o g i c 8 1 提供的y m s 服务进行了 性能比较与分析,为我们在今后的开发中合理地选择j m s 提供者提供了参照。目 前,消息通知子系统在公司内部已投入使用,到达了预期的效果。 关键词:j m s ,m o m ,j m s 客户端,j m s 提供者,j m s 消息 西安建筑科技大学硕士学位论文 t h es t u d ya n da p p f i c a f i o no fj m s s p e c i a l i t y :c o m p u t e ra p p l i c a t i o nt e c h n o l o g y n a m e :z h a ny a n t u t o r :z h a ow e n j i n gp r o f a b s t r a c t j a v am e s s a g es e r v i c ei sa n no p e na p p l i c a t i o np r o g r a m m i n gi n t e r f a c ed e v e l o p e db y s u nm i c r o s y s t e m si n c i tp r o v i d e sac o r n l l l o r lw a yf o rj a v ap r o g r a m st oc r e a t e ,s e n d , r e c e i v ea n dr e a de n t e r p r i s e - m e s s a g i n gs y s t e m sm e s s a g e d i f f e r e df r o mt r a d i t i o n a l m e s s a g i n gt e c h n o l o g i e s ,s u c h a sr e m o t em e t h o di n v o c a t i o n ,j m sp r o m o t e st h e r e l i a b i l i t y o f a s y n c h r o n o u s c o m m u n i c a t i o nb e t w e e n c o m p o n e n t s i nd i s t r i b u t e d c o m p u t i n ge n v i r o n m e n t s ,a n dc a nb 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 i n g s 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 ed 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 f i r s t l y , t h i sp a p e ra n a l y s e st h ec u r r e n ts t a t eo fj a v am e s s a g es e r v i c ea n di l l u s t r a t e s t h e s i g n i f i c a n c e t h a t u s i n g j a v a m e s s a g e s e r v i c e t e c h n o l o g yi m p l e m e n t s c o m m u n i c a t i o n sb e t w e e ne n t e r p r i s e s t h ep a p e rf o r w a r d st h ed e s i g n i n gm e t h o do fj m s c l i e n ta p p l i c a t i o n b a s e do np r a c t i c a la p p l i c a t i o nr e q u i r e m e n t s ,t h i sp a p e rg i v e st h es u b m e s s a g i n gs y s t e mt o t a ld e s i g na n dr e a l i z i n gt h es u bm e s s a g i n gs y s t e mi np o i n t - t o p o i n t m o d ea n dp u b l i s h s u b s c r i b em o d e a l s oi nt h ep a p e r , t h em e s s a g es e l e c t o rw h i c h s u p p o r t sf i l t r a t i n gt h er e c e i v e dm e s s a g ei sg i v e n ,a st h er e c e i v e rh o wt of i l t r a t eam e s s a g e f r o ms e n d e r si so n eo f t h em a i np r o b l e m si nt h es u bm e s s a g i n gs y s t e md e v e l o p m e n t f i n a l l y , t h ep a p e rc o m p a r e st h ec a p a b i l i t yo fj 2 e ej m sa n dw e b l o g i cj m s ,w h i c h p r o v i d e st h ec o r r e c tm e t h o dt os e l e c tj m sp r o v i d e r n o w , t h i ss u bm e s s a g i n gs y s t e mh a s b e e na p p l i e dt ot h ec o m p a n ya n da l lp e r f o r m a n c e sa r ef a m o u s k e yw o r d s :j a v am e s s a g es e r v i c e ,m e s s a g eo r i e n t e dm i d d l e w a r e j m sc l i e n t s ,j m sp r o v i d e r s ,j m sm e s s a g e 声明 本人郑重声明我所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含本人或其他 人在其它单位己申请学位或为其它用途使用过的成果。与我一同工作的同 志对本研究所做的所有贡献均已在论文中作了明确的说明并表示了致谢。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 论文作者签名: 、i 丰_ 色 关于论文使用授权的说明 日期:z 口疗;心 本人完全了解西安建筑科技大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布 论文的全部或部分内容,可以采用影印、缩印或者其它复制手段保存论文。 ( 保密的论文在论文解密后应遵守此规定) 论文作者签名 占车色 注:请将此页附在论文首页。 导师签名: 日期:口2 和f 岁 西安建筑科技大学硕士学位论文 1 1 论文背景 第一章绪论 随着当今网络的飞速发展,企业应用程序间消息服务技术受到了越来越多的关 注。企业应用程序间进行消息服务的一般方法是使用c o r b a ( c o m m o no b j e c t r e q u e s tb r o k e ra r c h i t e c t u r e ) 和r m i ( r e m o t em e t h o di n v o c a t i o n ) 等技术来进行程序的 开发,但是程序员必须花费大量时间和精力来开发和维护这些代码。所以,在企业 应用集成项目中,面向消息的中间件得到了普遍的应用。但是以往而向消息的中间 件产品都依赖于各自所运行的操作平台,因而限制了其运行的范围,使企业府用程 序仅限于单一的硬件和软件平台。应用j m s 0 a v am e s s a g es e r v i c e ,j a v a 消息服务) 技 术可咀成功地解决这一问题,为企业应用程序问进行消息服务提供一个可运行于不 同平台的、可靠安全的和高效的解决方案1 1 。 作者先后参与了西安汉堂软件有限责任公司的企业标准化管理系统、连锁网吧 管理系统等多个项目的开发,在这些项目开发的过程中,就体会到了团队开发人员 间进行信息传递时因为n t e m e t 的阻塞而带来的诸多不便。有多个项目开发的经验 作为积淀,作者通过总结和进一步的学习,以解决这一问题作为目标,从而确定了 咀j m s 技术的应用作为不断探索的方向,并且结合公司的需求,设计了基于j m s 技术的消息通知子系统。该系统便于企_ k 内部在团体开发过程中及时的信息交流和 数据的传输,完成局域网内部通信,实现办公环境中文件的相互传送。 1 2 论文意义 j a v a 消息服务( j a v a m e s s a g es e r v i c e ,简称j m s ) 是由s u n 公司开发的一个开放 性的应用编程接d ( a i i ) ,在它的开发中,许多领先的企业信息厂商给予了密切的配 合。j m s 将j a v a 技术与企业信息技术结合到一个新型的健壮的工具中,用于解决 = ;三业计算问题。j m s 的技术规范基于一组公菸信息概念和编程战略,这些概念和战 略得到所有与j m s 技术兼容的信息系统的支持。j m s 促进了分布式计算环境中各 个组件之问的可靠的异步通信,因而大大简化了企业应用的开发过程。作为j 2 e e 平台的一个集成部分,j m s a p i 因为允许各个组件之间的更好地互操作和通信,因 而进一步简化了企业开发和集成过程。采用j m s 技术,使各个开发商更窑翁创建 而进一步简化了企业开发和集成过程,采用j m s 技术,使各个开发商更容易创建 1 西安建筑科技大学硕士学位论文 成功的分布式应用,更迅速地将之推向市场。 j a v a2p l a t f o r m 、e n t e r p r i s ee d i t i o n ( j 2 e e ) 1 _ 2 提供了同步的消息传递,这就意 味着,消息提供者和接收者在消息的内容和发送时间上必须达成一致。从j 2 e e1 3 开始,j a v a 就在其企业应用解决方案中集成了异步消息传递。j m s 这个机制包括一 个底层a p i 用来访问企业消息传递系统。j m s 支持消息队列和更现代的发布一订阅 ( p u b l i s h - s u b s c r i b e ) 消息传递方法。企业中的用户不太可能通过直接运用j m s 来 传递消息。作为替代,集成软件供应商将在一个较大的架构中运用j m s ,这个架构 包括应用程序、服务器、和提供更全面和更高级解决方案的消息提供者。企业将在 这些架构中运用j m s ,它可以提供高级的开发工具和应用程序管理支持。 那些开发和宣传应用程序服务器( a p p l i c a t i o ns e r v e r ) 的公司( i b m 、b e a 、s u n 和o r a c l e ) 也都在专心研究运用j m s 的消息传递技术,因为将j m s 作为不同应用 程序之间有效的通信机制可能需要应用程序服务器的一些功能。特别的是,运用 e n t e r p r i s ej a v ab e a n s ( e j b s ) 的b e a n d r i v e n 的消息传递使应用程序服务器成为该结 构中的一个主要部分了。随着消息传递成为应用程序之间通信的可行的解决方案, j m s 将成为应用程序服务器供应商的一个重要的考虑因素。 实际上,消息传递将更多地用来连接现有的应用程序和数据库,而不是用来连 接新组件。消息传递,或者更明确的消息传递架构,在以前遗留的系统、数据仓库 ( d a t aw a r e h o u s e ) 、目的单一的应用程序、交易系统、甚至新的分布式应用程序之 间提供了连接,但它是典型的应用程序部署后的整合,而不是企业应用程序和数据 策略的一个计划了的部分。 在大多数企业中,我们开发和部署应用程序是为了解决特定的商业进程问题。 随着时间的推移,用户发现,如果可以得到更多的数据,这然应用程序就会提供更 多的商业信息。如果这些应用程序是用j 2 e e 编写的,那么j m s 就是在给商业问题 提供一个技术解决方案的同时,保持应用程序完整性的一个自然的选择了。即使一 个或两个应用程序都是在以前遗留的平台上编写的,如果企业是在计划一个长期的 j a v a 策略,那么j m s 仍然有意义h ”。 1 3 本人所做工作及论文结构 在消息通知子系统的开发过程中,作者所做的工作: ( 1 ) 参与了企业标准化管理系统、连锁网吧管理系统等项目的开发。 ( 2 ) 参与了公文交换系统的功能设计,详细设计。 ( 3 ) 探讨了消息中间件技术并深入研究了j m s 的体系结构以及它在分布式系统 2 西安建筑科技大学硕士学位沦文 中的应用。 ( 4 ) 负责公文交换系统中消息通知予系统的功能设计、详细设计、编码以及;! l l 试。 本论文的章节层次结构安排如下: 首先阐述了课题研发的技术背景,以及课题的意义;在第二章详细介绍课题的 相关技术,例如:中间件技术、j m s 技术,着重介绍了j m s 应用程序的组成和主 要接口以及j m s 中的消息概念,为课题的研发奠定了坚实的理论基础。作为文章 的重点部分,第三章给出了一般j m s 客户端应用的设计和实现,详细阐述了j m s 客户端a p i 的实现,并在第四章给出了基于j m s 技术的应用编程实例消息通 知子系统的设计和实现,该系统是j m s 消息通信的两种模式的应用。第五章对两 种不同通信模式下,采用不同的j m s 服务提供者所实现的消息通知子系统进行消 息响应时间性能比较,比较是采用测试的方法,并给出分析结论。文章的最后部分 对现阶段所完成的工作进行了总结并且对下一步将要进行的工作做了补充说明,为 本文的后续研发工作打下良好的基础。 西安建筑科技大学硕士学位论文 2 1 中问件的概述 第二章课题关键技术研究 2 1 1 中间件的基本概念 中间件是泛指能够屏蔽操作系统和网络协议的差异,能够为异构系统之问提供 通信服务的软件。中问件位于平台( 操作系统、硬件) 与应用软件之间应该能够有 效保护企业的投资,保证应用软件的相对稳定,实现应用软件的功能扩展。 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不 同的技术之问共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源 和网络通信。从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间 件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件, 定义中特别强调了其网络通信功能。那么,中间件究竟解决什么问题呢? 首先,应 用的互连和互操作是中间件要解决的第一位的问题。不管这些应用分布在什么硬件 平台上,使用了什么数据库,透过了多么复杂的网络,或是同一电脑中的不同应用 系统。这里所说的互连和互操作是应用之间而不是说系统之间的,因为中间件是一 种应用级软件,是一种应用集成的关键构件,一个好的中间件产品要能解决应_ 辟j 互 连带来的各种问题:支持各种通信协议、各种通信服务模式、传输各种数据内容、 数据格式翻译、流量控制、数据加密、数据压缩等;中间件核心要解决名字服务、 安全控制、并发控制、可靠性保证、效率保证等。应用开发要能提供基于不同平台 的丰富的开发接口、支持流行的开发工具、支持流行的异构互连接口标准( 如x a 、 i d l 等) :系统管理要解决对中间件本身的配置、监控、协调,为系统的易用易管提 供保证。其次,针对不同的应用领域,对中间件又有各种不同的要求。由于实际的 应用千差万别,不能指望有一种包罗万象的中间件解决所有的问题【2 。 2 1 2 中间件的分类 按照i d c 的分类方法,中间件可分为以下六类。 1 终端仿真屏幕转换 4 西安建筑科技大学硕士学位论文 用以实现客户机图形用户接口与已有的字符接口方式的服务器应用程序之间的 互操作。 2 数据访问中间件 适用于应用程序与数据源之间的互操作模型,客户端使用面向数据库的a p i , 以提请直接访问和更新基于服务器的数据源,数据源可以是关系型、非关系型和对 象型。这类中间件大都基于s q l 语句,采用同步通信方式。 3 远程过程调用中间件 r p c 机制是早期开发分布式应用时经常采用的一种同步式的请求应答协议。通 过这种协议,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。 r p c 扩展了过程语言中的“功能调用结果返回”的机制,使得它可以适用于一个远 程环境。在采用r p c 机制时,调用远端的过程只需去引用它,而不必告之网络地 址或其它底层信息。 4 消息中间件 尽管消息中间件不像r p c 机制那样流行,但越来越多的分布式应用采用消息中 间件来构建,通过消息中间件来把应用扩展到不同的操作系统和不同的网络环境。 基于消息的机制更多地适用于事件驱动的应用,当一个事件发生时,消息中间件通 知服务方应该进行何种操作。事件可以是一个请求,也可以只是种警示,警市到 来后,即可进行某种处理,但不需要等待应答。使用消息中间件编程采用的是消息 中间件的a p i ,可以很好地扩展到不同的操作系统和硬件平台上。 5 交易中间件 交易中间件是专门针对联机交易处理系统而设计的。联机交易处理系统需要处 理大量并发进程,处理并发涉及到操作系统、文件系统、编程语言、数据通信、数 据库系统、系统管理、应用软件,是一个相当艰巨的任务,但是工作的难度可以通 过采用一个交易中间件来简化。交易中间件就是组程序模块,用以大大减少开发 一个联机交易处理系统所需的编程量。x o p e n 组织专门定义了分布式交易处理的 标准及参考模型,把一个联机交易系统划分成资源管理( r 0 、交易管理( t m ) 和应 用( a p ) 三部分,定义了应用程序、交易管理器、多个资源管理器是如何协同工作的。 6 对象中间件 面向对象的技术一直是软件界努力追求的目标,传统的对象技术通过封装、继 承及多态提供了良好的代码重用共能。但是这些对象只存在个程序中,外面的世 界并不知道它们的存在,也无法访问它们。面向对象的中间件就是要解决这些问题, 它提供一个标准的构件框架,能使不同的厂家的软件通过不同的地址空间、网络和 操作系统互相交互访问。该构件的具体实现、位置及所依附的操作系统对客户来说 5 西安建筑科技大学硕士学位论文 都是透明的。面向对象的中间件技术的目标就是为软件用户及开发者提供种应 目 级的即插即用的互操作性,就像现在使用集成块和扩展板一样。有关对象中问件的 标准相继问世,像o m g 组织的c o r b a 、m i c r o s o f t 的c o m 以及s u n 公司的j 2 e e 等,这些标准都极大地促进了对象中间件技术的发展。 2 1 3 消息中间件 消息中间件作为一个中间软件,为分布式企业应用系统中创建、发送、接收和阅 读消息提供了一套可靠通用的方法。消息中间件使异步电子通信迅速可靠,并确保 消息的传递,接收通知和交易控制。 消息中间件的核心就是提出了目的地对象( d e s t i n a t i o n ) 的概念,包括队列( 0 u e u e ) 和主题( t o p i c ) 。消息客户发送消息到消息中间件上,消息中间件接收并依次转发到 合适的消息接收者上。 消息中间件可以既支持同步方式,又支持异步方式,可以很好地适用于面向对 象的编程方式。中间领域目前最热门的技术是异步的消息中间件,异步中间件技术 比同步中间件技术具有更强的容错性,在系统故障时可以保、证消息的正常传输。消 息中间件技术可以分为两类:点到点方式和发布订阅方式。点到点方式建立起消息 收发的一一对应关系,而发行订阅方式可以指定哪种类型的用户可以接收哪种类型 的消息。发布。订阅方式由于更加智能有效,事实上已成为异步中间件的非正式标 准。 消息中间件具有以下一些基本特点: 1 ) 可靠消息发送。应用程序发送消息时,消息发送者和接收者不一定要求同时 在线,消息中间件可以确保消息接收者在吊线的情况下消息不会丢失。 2 ) 异步通信。消息中间件允许消息发送者发送消息后继续进行其它工作,而不 必等待接收者的响应。 3 ) 交易支持。消息中间件提供了对交易的支持,同时也经常整合在交易系统中。 4 ) 一次发送,依次接收。消息中间件确保消息可以发送且仅发送一次,接收者 可以按照消息发送的顺序依次接收。 5 ) 消息路由服务。消息通过该服务可以经过最短路径( 或最低代价) 到达消息目 的地。系统管理员只需要定义每条路径的代价,消息中间件就可以为消息计算出最 低代价的路径。而且,消息路由服务可以避免单点失效,因此非常适合用于不可靠 的网络环境中。 消息中间件减少了开发跨平台和网络协议软件的复杂性。它屏蔽了不同操作系 6 西安建筑科技大学硕士学位论文 统和网络协议的具体细节,通过提供a p i 实现可以提高系统结构的灵活性以及实 现异构平台的互操作。所以应用之间的消息通信都通过消息服务器进行,新的应用 程序可以不经过重新编译和重新连接就可以部署到分布式系统中。这种消息通信的 形式极大的降低了分布式系统设计和实现的复杂性。 2 2j l v l s 简介 2 2 1j m s 基本概念1 5 l j a v a 消息服务( j a v a m e s s a g es e r v i c e ,简称j m s ) ,是s u n 公司定义的一套访问 消息系统的a p i 。j m s 定义了一些通用的企业消息概念和工具集。使用这些企业消 息产品前必须了解如下概念。 11j m s 提供者( j m sp r o v i d e r ) 对于一个消息应用来说,j m s 提供者是实现j m s 最核心的部分。理想状态下, j m s 提供者使用纯j a v a 编写,安装简单,并可以跨平台使用。j m s 一个最重要的 目标就是最小化实现一个j m s 提供者所需要做的工作。 2 ) j m s 消息( j m sm e s s a g e s ) j m s 定义了一套消息接口。客户端所使用的消息都是j m s 提供者提供的。j m s 一个最主要的目标就是客户端不依靠j m s 提供者,使用自己的a p i 来创建和使用 消息。 3 ) j m s 域( j m sd o m a i n s ) j m s 规范提供两种最普通的消息模式:发布订阅和点到点。 j m s 为j a v a 程序提供了一种创建、发送、接收和读取企业级消息系统消息的一 般方法,其目的是提供给消息系统客户一个固定的接口而且与底层的消息提供者无 关,这样,客户端的应用程序可以在不同的机器和操作系统中移植,而且能在不同 的消息系统产品之间转移。j m s 客户端都是建立在j a v a 技术上的,从而也能使用 其它j a v aa p i ,如j d b c 数据库连接,使用j a v ab e a n 组件模型,j d n l 名字服务,j t a 客户端交易处理控制以及j 2 s e 和3 2 e ea p i 来实现企业级应用服务程序。用j m s 编写的程序能够在任何实现了j m s 标准的m o m ( m e s s a g eo r i e n t e dm i d d l e w a r e ) 上运 行( 图2 1 简单描述了这一通信模型) 。 7 疆安建筑科技大学硕士学位论文 图2 1 j m s 通信模式 图2 1 中应用程序a 通过m o m 路由消息给应用程序b ( 可能位于完全不同的 计算机上) 。m o m 处理网络通信底层细节,如果没有可用的网络连接,m o m 将一 直存储消息直至获得网络连接,然后将消息转发给应用程序b 。 灵活性的另一方面是应用程序a 发送消息时,应用程序b 甚至不处于执行状态。 m o m 会一直保留消息到应用程序b 开始执行并试图取回消息为止。这还可以避免 应用程序a 在等待应用程序b 接收消息时阻塞。 1 2 2 $ m s 应用程序组成 如j m s 规范所述,一个j m s 应用程序可以由如下元素组成: j m s 客户机( j m sc l i e n t s ) :使用j m sa p l 发送和接收消息的j a v a 程序。 非j m s 客户机( n o n - j m s c l i e n t s ) :使用由m o m 提供的本地a p l ( n a t i v e c l i e n t a p i ) 访问m o m 的客户端程序。 消息( m e s s a g e ) :客户机之间所交换的消息。在设计j m s 应用程序时必须定 义消息的格式和内容。 j m s 提供者( j m sp r o v i d e r ) :由j m s 定义、m o m 产品供应器提供具体实现 的一组最小界面。 受管对象( a d m i n i s t r a t e do b j e c t s ) :由m o m 产品管理员预先创建给客户机使 用的对象,它独立于供应器专有的技术。 m o m 产品供应器在其底层消息传递机制和技术上有显著差异,为了保持 j m s 客户机的可移植性,实现j m s 接口的对象必须独立于供应器专有的技术。 实现这一点的机制就是受管对象。这些对象由供应器的消息传递系统管理员通过 供应器专有技术创建,并被置于j n d l 名称空间量供可移植的j m s 程序检索与访 问。 j m s 规范中定义了两类受管对象【1 0 j : r 西安建筑科技大学硕士学位论文 c o n n e c t i o n f a c t o r y ( 连接工厂) :用于刨建到m o m 底层消息系统的连接。 d e s t i n a t i o n ( 目的地对象) :由j m s 客户机使用以指定正在发送的消息目标或 正在接收的消息来源。 j m s 管理对象需要被管理员预先配置放入d 1 命名空间中。图2 2 表明了j m s 管理对象是如何工作的。 2 2 3j m s 主要接口 图2 2 1 4 1j m s 对象管理 j m s 定义了一组基于各种消息传递概念的公共接口,而p t p 和p s 这两个 消息传递域又分别定义了这套接口的相应扩展接口。 为了发送或接收消息,客户机使用连接生成器( c o n e c t i o n f a c t o r y ) 来获得 一个连接( c o n n e c t i o n ) ,客户机用这个连接和目标( d e s t i n a t i o n ) 来创建 ( s e s s i o n ) ,并获得所期望的队列和主题上的消息生产者( m e s s a g ep r o d u c e r ) 和消费者( m e s s a a g ec o n s u m e r ) 。表2 1 总结了这一情况。 表2 1 1 4 1j m s 主要接口关系 j m s 公共接口p t p 域接口p u n 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 r m e c t i o n f a c t o r yt o p i c c o r m e c t i o n f a c t o r y c o n n e c t i o n q u e u e c o n n e c t i o nt o p i c c o r m e c t i o n d e s t i n a t i o n q u e u et o p i c s e s s i o n q u e u e s e s s i 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 r q u e u e s e n d e rt o p i c p u b l i s h e r m e s s a g e c o n s u m e rq u e u e r e c e i v e r ,q u e u e b r o w s e rt o p i c s u b s c r i b e r 除了上表列出的接口外,为了与x a ( 分布式) 事务兼容,j m s 还提供了另外一组 接口。除了上表所示的1 8 个接口之外,j m s 还另外有9 个接口( 生成器、连接和会 9 西安建筑科技大学硕士学位论文 话类型的x a 版本) 。至少在编写客户枫代码来说,开发者最多需要6 个公共接口和 三个x a 兼容接口f x a c o n n e c t i o n f a c t o r y 、x a c o n n e c t i o n 以发x a s e s s i o n l 。 注释: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 - 3 描述了它们之间的关系) 。 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 的受管对象。 c o n n e c t i o n :至4 供应器的活动连接。 d e s t i n a t i o n :一种受管对象,它封装消息目标的标识,如消息发送到何处 或接收自何处。 s e s s i o n ;一个单线程的用于发送或接收消息的上下文。多个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 对象创建的用来接收消息的对象。 f r o m 图2 3 1 4 1j m s 公共对象关系图 如图2 3 所示,一个j m s 客户机程序通常由下列步骤组成: 1 1 通过j n d i 查找c o n n e c t i o n f a c t o r y 对象。 2 ) 通过j n d i 查找一个或多个d e s t i n a t i o n 对象。 3 ) 用c o n n e c t i o n f a c t o r y g , 建一个j m sc o n n e c t i o n 对象。 4 1 用c o n n e c t i o n 创建一个或多个s e s s i o n 对象。 5 1 用s e s s i o n 和d e s t i n a t i o n 创建所需的m e s s a g e p r o d u c e r 和m e s s a g e c o n s t u n e r 。 6 1 启动c o n n e c t i o n ,开始接收、处理以及发送消息。 l o 西安建筑科技大学硕士学位论文 2 2 4 消息 m o m ( m e s s a g eo r i e n t e dm i d d l e w a r e ) 系统的中心就是消息,j m sn n n 类犁的 消息提供了它们各自的消息类型,但所有消息都扩展自m e s s a g e 接口。j m s 中,消 息由消息头、属性和消息主体三部分组成。 消息头( h e a d e r ) 一消息头包含消息的识别信息和路由信息,消息头包含一些标准的 属性如:j m s d e s t i n a t i o n ,j m s m e s s a g e i d 等。 表2 2 【4 1 消息头各字段及功能 j m s d e s t i n a t i o n消息发送的目的地 传递模式,有两种模式:p e r s i s t e n t 和n o n 啊p e r s i s t e n t , p e r s i s t e n t 表示该消息一定要被送到目的地,否则会导致应用 j m s d e l i v e r y m o d e 错误。n o np e r s i s t e n t 表示偶然丢失该消息是被允许的,这 两种模式使开发者可以在消息传递的可靠性和吞吐量之问找到平 衡点。 j m s m e s s a g e l d 唯一识别每个消息的标识,由j m sp r o v i d e r 产生。 j m s t i m e s t a m p 一个消息被提交给j m sp r o v i d e r 到消息被发出的时间。 用来连接到另外一个消息,典型的应用是在回复消息中连接到原 j m s c o r r e l a t i o n l d 消息。 j m s r e p l y t o 提供本消息回复消息的目的地址 如果一个客户端收到一个设置了j m s r e d e l i v e r e d 属性的消息,则 j m s r e d e l i v e r e d表示可能该客户端曾经在早些时候收到过该消息,但并没有签收 ( a c k n o w l e d g e d ) 。 3 w i s t y p e 消息类型的识别符。 消息过期时间,等于q u e u e s e n d e r 的s e n d 方法中的t i m e t o l i v e 值 或t o p i c p u b l i s h e r 的p u b l n h 方法中的t i m e t o l i v e 值加上发送时 j m s e x p i r a t i o n刻的g m t 时间值。如果t i m e t o l i v e 值等于零,则j m s e x p i r a t i o n 被设为零,表示该消息永不过期。如果发送后,在消息过期时间 之后消息还没有被发送到i 1 的地,则该消息被清除。 消息优先级,从0 - 9 十个级别,0 - 4 是普通消息,5 - 9 是加急消息。 j m s p r i o r i t y j m s 不要求j m sp r o v i d e r 严格按照这十个优先级发送消息,但必 须保证加急消息要先于普逶消息到达。 属性( p r o p e r t i e s ) 一除了标准的消息头字段外,消息还通过内建的属性( p r o p e r t i e s ) 西安建筑科技大学硕士学位论文 机制支持向消息中加入可选头字段。定义可选属性必须遵循定的规则:所有的属 性名都必须以j m s x 开始,遵守消息选择器标识符命名规则:属性的类型可以是 b o o l e a n 、b y t e 、s h o r t 、i n t 、l o n g 、f l o a t 、d o u b l e 和s t r i n g 。j m s 定义了一个供应器选 择提供的标准属性集如下表2 3 所示 表2 , 3 1 4 1j m s 标准属性集 属性名称类型描述 j m s x u s e r d s t r i n g 标识发送消息的用户( 发送方供应器设置) j m s x a p p l ds t r i n g 标识发送消息的应用程序( 发送方供应器设置) i m s x g r o u p l ds t r i n g 标识消息所在的消息组( 客户机设置) 盯“s x p r o d u c e r t x i d s t r i n g 标识生成消息的事务( 接收方供应器设置) j m s x c o n s u m e r t x i d s u i n g标识使用消息的事务( 接收方供应器设置) j m s x g m u p s e q i n t 消息组中消息的顺序号( 客户机设置) j m s x d e l i v e r y c o u n t i n t 消息传递的尝试次数( 接收方供应器设置) 由维护消息的消息仓库供应器使用,通常和j m s j m s x s t a t ei n t 生产者和消费者无关( 供应器设置) j m s 传递消息给接收方的时间( 接收方供应器设 j m s x r e v t i m e s t a m p l o n g 置) j m s x 一 为供应器保留的属性( 供应器设置) 消息体( b o d y ) 一j m s a p i 定义了5 种消息体格式,也叫消息类型,你可以使用不同 形式发送接收数据并可以兼容现有的消息格式,下面表2 4 描述这5 种类型 表2 4 1 4 1j m s 消息类型 消息类型消息体 t e x t m e s s a g e 包含一个字符串( s t r i n g ) m a p m e s s a g e名,值对的集合,名是s t r i n g 对象,值类型可以是j a v a 任何基本类 型 b y t e s m e s s a g e 字节流 s t r e a m m e s s a g ej a v a 中的输入输出流 o b j e c t m e s s a g e j a v a 中的可序列化对象 m e s s a g e 没有消息体,只有消息头和属性 2 2 5 j a v a x j m s 包 1 2 西安建筑科技大学硕:t 学位论文 j m s a p i 仅由j a v a x j m s 一个包中的所有接口和类组成。下面两节将分别介绍其 接口、娄。 2 2 5 1 接口层次结构 如下图2 4 描述了j a v a x j m s 包中接口层次结构。 ( 量亟亘垂亘二) 画塑匦回 c 亘巫叵) 亟匦亟回 图2 4 j a v a x e j b 包接口结构 西安建筑科技大学硕士学位论文 注释 2 , 2 5 2 类层次结构 一继承 如f 图2 5 描述了j a v a x j m s 包中类层次结构。 勰: 兰 图2 5 1 4 ij a v a x j m s 类结构 2 3j 2 e e 应用服务器集成i n s j m s 作为s u n 公司提出的种新型的消息中间件能够与其它企业级的j a v a a p i 协同工作。在j 2 e e 应用服务器中,j m s 作为消息收发系统使e j b 组件之间的 异步通信更加可靠。 y m s 电提供了一套专用的应用服务器工具( j m sa p p l i c a t i o ns e r v e rf a c i l i t i e s ) 供 1 4 西安建筑科技大学硕士学位论文 j 2 e e 服务器使用,这些工具除了可以并发处理订阅消息以外,还对分布式交易系 统提供支持。当然,就j m s 系统本身而言,是不需要使用这些工具的。 j 2 e e 应用服务器可以通过专用工具配置、管理、启动和停止j m s 消息服务。 同时,j m s 经过e j b 容器封装之后成为可交易的资源,可以使用j t s 管理分布式交 易系统中的消息更加可靠和方便。 2 4 本章小结 j m s 作为一种新型的消息中间件规范,与传统消息中间件相比更适合于企业级 消息系统的构建。j m s 作为一种标准的j a v a 2a p i 继承了j a v a 语言良好的继承性和 平台兼容性,支持目前所有的消息传递模式,能够很好的集成到j 2 e e 应用服务器 中。 本章首先对j m s 相关技术做了简要阐述,介绍了中间件的概念,中间件的分类 以及消息中间件。其次从j m s 的基本概念入手,着重介绍了j m s 应用程序的组成 和主要接口,以及j m s 消息的组成。文章先定义了两个基本概念:j m s 提供者是 软件供应商根据规范实现的消息中闻件产品;j m s 客户是使用j m s 提供者进行消 息交流的j a v a 应用程序。然后介绍了j m s 管理对象和j m s 标准接口的基本概念等 方面的内容。j m s 消息模型部分详细阐述了消息对象的基本结构,包括消息头域和 消息属性的定义、消息主体的分类等方面的内容。文章专门介绍了j a v a x j m s 包, 给出了该包中接口层次结构和类层次结构。 本章还定义了j m s 的一些主要概念:连接是客户和服务器之间传递消息的通 道;会话是处理消息的单线程上下文;消息生产者和消息消费者分别用来发送和接 收消息。最后关于j 2 e e 应用服务器集成j m s 消息服务方面的内容

温馨提示

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

评论

0/150

提交评论