![]() | |
Sun Java System Message Queue 3 2005Q1 技术概述 |
第 6 章
Message Queue 和 J2EEJava 2 Platform, Enterprise Edition(J2EE 平台)是一种标准服务器平台用于托管多层和瘦客户机企业应用程序的规范。J2EE 平台的一项要求是,分布式组件之间必须能够通过可靠的异步消息交换进行交互。这种交互是通过使用 JMS 提供者实现的。事实上,Message Queue 是 J2EE 平台的参考 JMS 实现。
本章探讨在 J2EE 平台环境中实现 JMS 支持的其他信息。本章涵盖以下主题:
由于本章涉及 J2EE 组件的编程和部署两方面的内容,因此应用程序开发者和管理员都会对本章内容感兴趣。
JMS/J2EE 编程:消息驱动 Bean除在JMS 编程模型中介绍的通用 JMS 客户机编程模型外,还有专用于 J2EE 平台应用程序上下文中的 JMS。这种专用的 JMS 客户机称为消息驱动 Bean,是 EJB 2.0 规范 (http://java.sun.com/products/ejb/docs.html) 中描述的企业 JavaBean (EJB) 系列组件之一。
之所以需要消息驱动 Bean,是因为其他 EJB 组件(会话 Bean 和实体 Bean)只能被同步调用。这些 EJB 组件只能通过标准 EJB 接口来访问,因此不具备异步接收消息的机制。
但是,异步消息传送是许多企业应用程序的一项必不可少的要求。这些应用程序大多需要服务器端组件能够互相通信和响应,而不占用服务器资源。因此就需要有这样一种 EJB 组件:不需要紧密耦合到消息生产者即可接收和使用消息。这种能力对于服务器端组件必须响应应用程序事件的任何应用程序都是必需的。在企业应用程序中,此能力还必须在负荷增加时具有可伸缩性。
消息驱动 Bean (MDB) 是由专用的 EJB 容器(为所支持的组件提供分布式服务的软件环境)支持的专用 EJB 组件。
消息驱动 Bean MDB 是实现 JMS MessageListener 接口的 JMS 消息消费者。当 MDB 容器接收消息时,onMessage 方法(由 MDB 开发者编写)将被调用。onMessage() 方法使用消息的方式与标准 MessageListener 对象的 onMessage() 方法使用消息的方式一样。不能像对其他EJB 组件那样远程调用MDB 上的方法,因此,不存在与它们关联的主接口或远程接口。MDB 可使用来自单一目标的消息。如图 6-1 所示,独立 JMS 应用程序、JMS 组件、EJB 组件或 Web 组件均可生成消息。
图 6-1 与 MDB 进行消息传送
MDB 容器 MDB 由专用 EJB 容器支持,负责创建并设置 MDB 实例,以进行消息的异步使用。这包括建立与消息服务的连接(包括验证)、创建与给定目标关联的会话池、管理在会话池和关联 MDB 实例之间接收到的消息的分发。由于容器控制了 MDB 实例的有效期,因此它通过管理 MDB 实例池来容纳传入的消息负荷。
与 MDB 关联的是一个部署描述符,它指定了容器设置消息使用时使用的受管理对象的 JNDI 查找名称:连接工厂和目标。部署描述符还可能包括部署工具配置容器所需的其他信息。每个这样的容器只支持一个 MDB 的实例。
J2EE 应用服务器支持在 J2EE 体系结构中(请参见位于 http://java.sun.com/j2ee/download.html#platformspec 的 J2EE 平台规范),EJB 容器由 J2EE 应用服务器托管。应用服务器为各种容器提供所需的资源:事务管理器、持久性管理器、命名服务以及 JMS 提供者(对于消息传送和 MDB)。
在 Sun Java System Application Server 中,JMS 消息传送资源由 Sun Java System Message Queue 提供:
JMS 资源适配器
资源适配器是一种在符合 J2EE 1.4 规范的应用服务器中插入附加功能的标准方法。(J2EE 连接器体系结构 (J2EECA) 1.5 规范定义了该标准。)该体系结构允许任何应用服务器(符合 J2EE 1.4 规范)以标准方式与外部系统进行交互。外部系统可能包括各种企业信息系统 (EIS) 以及各种消息传送系统:例如,JMS 提供者。Message Queue 包括 JMS 资源适配器,它允许应用服务器将 Message Queue 作为 JMS 提供者使用。
J2EECA 1.5 提供的标准交互包括连接池、线程池、事务与安全上下文传播,以及各种消息驱动 Bean 容器的支持。该规范还包括创建连接工厂和其他受管理对象的标准方式。
通过将 JMS 资源适配器插入应用服务器,即可在应用服务器中部署和运行的 J2EE 组件之间交换 JMS 消息。这些组件所需的 JMS 连接工厂和目标受管理对象可使用 J2EE 应用服务器管理工具进行创建和配置。
但是其他管理操作(如管理消息服务器和物理目标)则不包括在 J2EECA 规范之中,且仅能通过提供者特定工具执行。
Message Queue 资源适配器集成在 Sun J2EE 1.4 应用服务器中。不过,它尚未经过任何其他 J2EE 1.4 应用服务器的认证。
Message Queue 资源适配器是单个文件 (imqjmsra.rar),所在目录视操作系统而定(请参见 Message Queue 管理指南)。imqjmsra.rar 文件包含资源适配器部署描述符 (ra.xml) 以及应用服务器使用适配器所需的 JAR 文件。
您可按照应用服务器附带的资源适配器部署和配置说明在任何 J2EE 1.4 兼容应用服务器上使用 Message Queue 资源适配器。随着商业 J2EE 1.4 应用服务器的上市以及 Message Queue 资源适配器经过了那些应用服务器的认证,Message Queue 文档将提供相关部署和配置过程的特定信息。