J2EE组件开发 消息驱动的EJB

http://tech.ddvip.com   2007年10月29日    社区交流

内容摘要:Java消息服务(Java Message Service,JMS)是一个Java API,它定义了消息的客户程序如何以一种标准化的形式与底层的消息服务提供者交互。JMS提供了一种接口,底层消息服务提供者通过该接口向客户程序提供JMS消息服务。

  对于Bean开发者来说,最重要的任务也许是实现onMessage()方法。当一个异步消息必须由Bean实例处理时,容器将调用onMessage()方法。onMessage()方法的参数是一个普通的JMS javax.jms.Message的实例,消息驱动的EJB实例从这个Message的实例提取待处理的数据完成消息处理。

  2.2 JMS消息接口

  那么,在onMessage()方法调用传入的 JMS消息中,消息驱动的Bean如何提取信息,可以提取哪些信息呢?图二描述了基本JMS消息类型的核心接口和概念。在一个以JMS为基础的消息系统中,Message接口是在系统中传递的所有消息的最基本的接口(或称之为根接口,Root Interface)。Destination接口描述了消息传递的一个终端;类似地,由于消息有一个传递模式,所以图二还显示了Message接口与DeliveryMode接口的概念上的关系。

  JMS消息的头信息可以通过一组标准的方法设置或提取,这组标准方法的名字为getJMSXXX()或setJMSXXX()形式(下面我们分别称之为get方法和set方法),其中XXX是消息头信息中的属性名字,例如getJMSDeliveryMode()方法。在Message接口中,通过get方法和set方法操作的标准头信息属性包括:唯一的消息ID,时标(Timestamp),答复和目标地址,消息传递模式,消息类型,以及消息的优先级。

  在JMS消息中,JMS容器提供者特有的属性可以通过getXXXProperty()方法提取,或通过setXXXProperty()方法设置,其中XXX表示属性的类型,例如byte getByteProperty(java.lang.String name)。每一个属性有一个通过String对象指定的名字和相应的值。名字以JMSX前缀开头的属性作为标准JMS属性保留。

  与消息正文数据(或称之为消息体,与消息头相对而言)的五种类型对应,五种消息类型扩展了Message接口,如图三所示。Byte数据由BytesMessage封装,Serializable对象由ObjectMessage封装,String消息由TextMessage封装,键-值对由MapMessage封装,I/O流由StreamMessage封装。

责编:豆豆技术应用

正在加载评论...