J2EE组件开发 消息驱动的EJB

豆豆网   技术应用频道   2007年10月29日  【字号: 收藏本文

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

  二、MDB体系结构

  消息驱动的Bean组件的基本体系结构。位于顶端的是javax.ejb.EnterpriseBean接口,它是所有EJB的基础接口。EnterpriseBean接口派生出了javax.ejb.MessageDrivenBean接口,所有消息驱动的EJB类必须实现javax.ejb.MessageDrivenBean接口。此外,消息驱动的Bean必须实现javax.jms.MessageListener接口。公用的、非最终的、非抽象的消息驱动的EJB,消息驱动的EJB与其他类型的EJB不同,它们不把业务方法导出给客户程序,它们关心的只是遵从EJB容器的接口要求。由于这个原因,消息驱动的Bean必须有一个不需要参数的公用构造方法(ejbCreate()方法),而且不应该实现finalize()方法。

  2.1 MDB接口

  在消息驱动的Bean中,setMessageDrivenContext()方法用来把一个MessageDrivenContext的对象实例传递给EJB,它是MessageDrivenBean接口定义中容器调用的第一个方法。

  MessageDrivenContext对象封装了一个EJB消息驱动容器上下文的接口,支持消息驱动的EJB实例访问容器提供的运行时消息驱动上下文对于消息驱动的EJB来说,关键之一是要实现一个没有参数的ejbCreate()方法。当EJB容器准备创建消息驱动EJB的实例时,它将调用这个方法。容器之所以决定创建某个EJB的实例,可能是因为它要构造一个Bean实例的缓冲池,也可能是因为它接收到了客户的请求。这个ejbCreate()方法和其他Bean上的EJB构造方法类似,属于EJB实现的一种特殊的构造函数或初始化方法。

  当EJB容器准备不让Bean实例继续处理客户程序的请求时,它就会调用消息驱动Bean的ejbRemove()方法。何时在消息驱动的Bean上调用ejbRemove()方法由EJB容器单独决定,不受EJB客户程序的任何约束。应当注意的是,容器并不保证一定调用ejbRemove()方法。在正常操作时,容器会调用ejbRemove()方法;但是,当消息驱动的Bean向容器抛出了系统异常时,不能保证ejbRemove()方法一定会被调用。由于这个原因,Bean开发者必须按时检查和清除Bean分配的所有资源。

责编:豆豆技术应用

正在加载评论...