Java 2 Platform, Enterprise Edition( J2EE 平台)是用于托管多层和瘦客户端企业应用程序的标准服务器平台的规范。J2EE 平台的其中一个要求是分布式组件能够通过可靠的异步消息传送进行交互。这种交互是通过使用 JMS 提供者实现的。事实上,Message Queue 是 J2EE 平台的参考 JMS 实现。
本章探讨有关在 J2EE 平台环境中实现 JMS 支持的其他信息,其中包括下列主题:
有关将 Message Queue 用作符合 J2EE 的应用服务器的 JMS 提供者的其他信息,请参见《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 17 章 “JMS 资源适配器属性参考”。
除了在第 2 章,客户端编程模型介绍的通用 JMS 客户端编程模型外,还有专用于 J2EE 平台应用程序上下文中的 JMS 客户端。这种专用的客户端称为消息驱动 Bean,它是 Enterprise JavaBeans (EJB) 2.0(和更高版本)规范 (http://java.sun.com/products/ejb/docs.html) 中描述的 EJB 系列组件之一。
消息驱动 Bean 提供异步消息传送;而其他 EJB 组件(会话 Bean 和实体 Bean)只能通过标准的 EJB 接口同步调用。但是,企业应用程序通常需要异步消息传送,以便服务器端组件能够在不占用服务器资源的情况下相互通信。服务器端组件必须响应应用程序事件的任何应用程序需要这样一种 EJB 组件:不需要紧密耦合到消息生成方即可接收和使用消息。在企业应用程序中,这种能力还必须在负载增加时扩展。
消息驱动 Bean (Message-driven Bean, MDB) 是由专用的 EJB 容器(为所支持的组件提供分布式服务)支持的 EJB 组件。
JMS 消息驱动 Bean 是用于实现 JMS MessageListener 接口的 EJB。当 MDB 容器接收到消息时,将调用 onMessage 方法(由 MDB 开发者编写)。onMessage() 方法使用消息的方式与标准 MessageListener 对象的 onMessage() 方法使用消息的方式一样。不能像对其他 EJB 组件那样远程调用 MDB 的方法。因此,不存在与它们关联的主接口或远程接口。MDB 可使用来自单一目的地的消息。如图 5–1 所示,独立 JMS 应用程序、JMS 组件、EJB 组件或 Web 组件均可生成消息。
专用的 EJB 容器支持 MDB。它将创建 MDB 的实例,并对这些实例进行设置以便异步使用消息。该容器与消息服务(包括验证)建立连接,创建与给定目的地关联的会话池,并管理池中会话之间的消息分发。由于该容器控制 MDB 实例的有效期,因此它通过管理 MDB 实例池来容纳传入的消息负载。
与 MDB 关联的是部署描述符,它指定容器在设置消息使用时所使用的连接工厂和目的地的属性。部署描述符还可以包括部署工具配置容器所需的其他信息。每个这样的容器都支持单个 MDB 的实例。
在 J2EE 体系结构中,EJB 容器由 J2EE 应用服务器托管。应用服务器提供各种容器所需的资源:事务管理器、持久性管理器、命名服务以及(消息传送和 MDB 所需的)JMS 提供者。
在 Sun Java System Application Server 中,JMS 消息传送资源由 Sun Java System Message Queue 提供:
对于 Sun Java System Application Server 7.0,Message Queue 消息传送系统作为本地 JMS 提供者集成到应用服务器中。
对于 Sun J2EE 1.4 Application Server,Message Queue 作为嵌入式 JMS 资源适配器插入到应用服务器中。
对于该应用服务器的后续发行版本,将利用标准资源适配器部署和配置方法将 Message Queue 插入到应用服务器中。
有关 J2EE 体系结构的信息,请参见位于 http://java.sun.com/j2ee/download.html#platformspec 的 J2EE 平台规范。
资源适配器是一种在符合 J2EE 1.4 规范的应用服务器中插入附加功能的标准方法。J2EE 连接器体系结构 (J2EE Connector Architecture, J2EECA) 1.5 规范定义的标准允许应用服务器以标准方式与外部系统进行交互。外部系统可以包括企业信息系统 (Enterprise Information System, EIS) 和消息传送系统,例如 JMS 提供者。Message Queue 包括 JMS 资源适配器,该适配器允许应用服务器将 Message Queue 用作 JMS 提供者。
将 JMS 资源适配器插入应用服务器后,在应用服务器中部署和运行的 J2EE 组件即可交换 JMS 消息。这些组件所需的 JMS 连接工厂和目的地受管理对象可以使用 J2EE 应用服务器管理工具来创建和配置。
但是 J2EECA 规范中不包括其他管理操作(如管理代理和物理目的地),只能通过特定于提供者的工具来执行这些操作。
Message Queue 资源适配器集成在 Sun J2EE 1.4 应用服务器中。但它尚未经过其他任何 J2EE 1.4 应用服务器的验证。
Message Queue 资源适配器是单个文件 (imqjmsra.rar),它所在的目录因操作系统而异(请参见《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 17 章 “JMS 资源适配器属性参考”)。imqjmsra.rar 文件包含资源适配器部署描述符 (ra.xml) 以及应用服务器使用适配器所需的 JAR 文件。
您可按照应用服务器附带的资源适配器部署和配置说明,在任何符合 J2EE 1.4 的应用服务器上使用 Message Queue 资源适配器。随着商业 J2EE 1.4 应用服务器的推出以及 Message Queue 资源适配器通过了这些应用服务器的验证,Message Queue 文档将提供相关部署和配置过程的特定信息。