- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
J2EE组开发:消息驱动的EJB
? 一、概述 消息服务是一种在分布式应用之间提供消息传递服务的软件,具有可靠、异步、宽松结 合、语言中立、平台中立的特点,而且通常是可配置的。它的实现原理是:对发送者和 接收者之间传递的消息进行封装,并在分布式消息客户程序结合的位置加上一个软件处 理层。消息服务为消息的客户程序提供了一个接口,这个接口隔离了底层的消息服务, 使得各种不同的客户程序能够通过一个友好的编程接口方便地通信。 Java消息服务(Java Message Service,JMS)是一个Java API,它定义了消息的客户程 序如何以一种标准化的形式与底层的消息服务提供者交互。JMS提供了一种接口,底层消 息服务提供者通过该接口向客户程序提供JMS消息服务。JMS提供了点对点消息模式(Po int-to-Point)和发布-订阅消息模式(Publish-Subscribe)。点对点消息模式通过一 个消息队列实现,消息的生产者向队列写入消息,消息的消费者从队列提取消息。发布 -订阅消息模式通过一个话题(Topic)节点构成的层次结构实现,消息的生产者向这个 层次结构发布消息,消息的消费者向这个结构订阅消息。 点对点消息模式具有如下特点: 每一个消息只有一个消费者。 消息的接收者和发送者之间不存在时间上的依赖关系。不论发送者发送消息时接收者是 否在运行,接收者都可以提取信息。 接收者对于成功处理的消息给出回执。 发布-订阅消息模式具有如下特点: 每一个消息可以有多个消费者。 向某个话题订阅的客户程序只能收到那些在它订阅之后发布的消息。为了接收到消息, 订阅者必须保持活动状态。因此,发布者和订阅者之间存在时间上的依赖关系。 JMS API在一定程度上放宽了对这种依赖关系的要求,允许创建持久性订阅(Durable S ubscription)。有了持久性订阅,当订阅者不活动时发送的消息也能接收到。 EJB 2.0规范定义了一种新的EJB类型,即消息驱动的EJB(Message-Driven EJB,简称M DB),它能够以EJB的形式实现JMS消息的接收者。消息驱动的EJB实现一组新的接口,这 组接口使得EJB能够异步地接收和处理JMS消息生产者发送到队列或话题的消息。EJB客户 程序的构造方式与普通JMS消息生产者的构造方式完全一样,也就是说,JMS消息生产者 不必知道消息的消费者是一个EJB。 相对于会话Bean和实体Bean而言,消息驱动的Bean最大的特点是客户程序不通过接口访 问Bean。与会话Bean和实体Bean不同,消息驱动的Bean只有一个Bean类。从某些方面看 ,消息驱动的Bean类似于无状态会话Bean: 消息驱动的Bean不为特定的客户保留数据或对话状态。 一个消息驱动Bean的所有的实例都是等价的,这使得容器能够把消息指派给任意一个消 息驱动Bean的实例。容器能够建立消息驱动Bean的缓冲池,实现消息的并发处理。 一个消息驱动的Bean能够处理来自多个客户程序的消息。 消息驱动Bean的实例变量可以在处理客户消息期间包含一些状态信息,例如JMS连接、打 开的数据库连接,或者是对EJB对象的引用。当一个消息到达,容器调用消息驱动Bean的 onMessage()方法处理消息。onMessage()方法通常把消息定型(cast)成为五种JMS消息 类型之一,然后按照应用的业务逻辑的要求处理消息。 传递给消息驱动Bean的消息可能处于一个事务之内,这时,onMessage()方法内的所有操 作都属于该事务的一部分。如果消息处理结果被回退,则系统将再次投递该消息。 哪些时候应该使用消息驱动的Bean呢?会话Bean和实体Bean能够发送JMS消息,能够同步 接收消息,但不能异步接收。一些时候,为防止过多地占用服务器资源,在服务器端的 组件中,我们想要避免阻塞,这时,我们可以用消息驱动的Bean异步接收消息。 二、MDB体系结构 图一描述了消息驱动的Bean组件的基本体系结构。 在图一中,位于顶端的是javax.ejb.EnterpriseBean接口,它是所有EJB的基础接口。E nterpriseBean接口派生出了javax.ejb.MessageDrivenBean接口,所有消息驱动的EJB类 必须实现javax.ejb.MessageDrivenBean接口。此外,消息驱动的Bean必须实现javax.j ms.MessageListener接口。公用的、非最终的、非抽象的消息驱动的EJB,比如图一显示 的MyMessageDrivenEJBean,必须同时实现MessageListener接口和MessageDrivenBean接
您可能关注的文档
最近下载
- 柱式墩、盖梁、系梁、承台、桥台与搭板施工方案.doc VIP
- 陕西省乡镇(街道)地质灾害风险调查评价技术要求-1万(试行)2022年版.pdf VIP
- 2.1楞次定律(教学设计)-高中物理人教版(2019)选择性必修第二册.docx VIP
- 汪峰我爱你中国歌词完整版.doc VIP
- 手术器械应用运输情况.pptx VIP
- 保育员初级实操PPT课件.pptx
- 李晓峰--通信原理习题答案-CH4.doc VIP
- 新人教版数学四年级上册第四单元《三位数乘两位数》教材解析PPT.pptx VIP
- 第5课 《绚彩的天空》(课件)-浙美版(2024)美术三年级上册.pptx VIP
- 道路货运十二项安全管理制度.pdf VIP
文档评论(0)