J2EE组件开辟 - 消息驱动的EJB[Java编程]
本文“J2EE组件开辟 - 消息驱动的EJB[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、概述
消息服务是一种在分布式利用之间供应消息传送服务的软件,具有坚固、异步、宽松结合、语言中立、平台中立的特点,并且普通是可配置的.它的实现原理是:对发送者和接纳者之间传送的消息举行封装,并在分布式消息客户程序结合的位置加上一个软件处理层.消息服务为消息的客户程序供应了一个接口,这个接口断绝了底层的消息服务,使得各种差别的客户程序可以通过一个友好的编程接口便利地通信.
Java消息服务(Java Message Service,JMS)是一个Java API,它定义了消息的客户程序若何故一种尺度化的情势与底层的消息服务供应者交互.JMS供应了一种接口,底层消息服务供应者通过该接口向客户程序供应JMS消息服务.JMS供应了点对点消息情势(Point-to-Point)和公布-定阅消息情势(Publish-Subscribe).点对点消息情势通过一个消息行列实现,消息的生产者向行列写入消息,消息的消费者从行列提撤消息.公布-定阅消息情势通过一个话题(Topic)节点构成的层次构造实现,消息的生产者向这个层次构造公布消息,消息的消费者向这个构造定阅消息.
点对点消息情势具有以下特点:
每一个消息只有一个消费者.
消息的接纳者和发送者之间不存在时间上的依靠关系.不管发送者发送消息时接纳者能否在运行,接纳者都可以提失信息.接纳者关于成功处理的消息给出回执.
公布-定阅消息情势具有以下特点:
每一个消息可以有多个消费者.
向某个话题定阅的客户程序只能收到那些在它定阅之后公布的消息.为了接纳到消息,定阅者必须保持活动状况.因此,公布者和定阅者之间存在时间上的依靠关系.
JMS API在一定程度上放宽了对这种依靠关系的要求,答应成立长期性定阅(Durable Subscription).有了长期性定阅,当定阅者不活动时发送的消息也能接纳到.
EJB 2.0标准定义了一种新的EJB范例,即消息驱动的EJB(Message-Driven EJB,简称MDB),它可以以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异步接纳消息.
以上是“J2EE组件开辟 - 消息驱动的EJB[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |