版本 4.4
文件号码 821-0894
本发行说明包含 Sun GlassFish Message Queue 4.4 发行时可用的重要信息。介绍了新增功能和增强功能、已知问题和限制以及其他信息。开始使用 Message Queue 4.4 之前,请先阅读本文档。
本发行说明还包含有关 Message Queue 4.3、4.2、4.1 和 4.0 发行版的信息。例如,有关这些发行版中新增功能的信息,可分别参见Message Queue 4.2 的新增功能、Message Queue 4.1 的新增功能和Message Queue 4.0 的新增功能。
本发行说明的最新版本可以在 Sun GlassFish Message Queue 文档 Web 站点 (http://docs.sun.com/coll/1307.7) 找到。在安装和设置软件之前,请先查看此 Web 站点上的相关信息,并在以后定期查看最新的发行说明和产品文档。
本发行说明包含以下部分:
本文档引用了第三方 URL 以提供其他相关信息。
Sun 对本文档中提到的第三方 Web 站点的可用性不承担任何责任。对于此类站点或资源中的(或通过它们获得的)任何内容、广告、产品或其他资料,Sun 并不表示认可,也不承担任何责任。对于因使用或依靠此类站点或资源中的(或通过它们获得的)任何内容、产品或服务而造成的或连带产生的实际或名义损坏或损失,Sun 概不负责,也不承担任何责任。
下表列出了 Message Queue 产品的所有 4.x 发行版的发行日期,并描述了此文档中与每个发行版关联的更改。
表 1–1 修订历史记录
日期 |
更改描述 |
---|---|
2009 年 10 月 |
此文档针对 Message Queue 4.4 发行版。添加了该发行版的新增功能。 |
2009 年 5 月 |
此文档针对 Message Queue 4.4 Beta 的初始发行版。添加了该发行版的新增功能。 |
2008 年 12 月 |
此文档针对 Message Queue 4.3 发行版。添加了该发行版的新增功能。 |
2008 年 8 月 |
此文档针对 Message Queue 4.2 发行版。添加了该发行版的新增功能。 |
2007 年 9 月 |
此文档针对 Message Queue 4.1 的第三个发行版。增加了 Java Enterprise System 监视框架、固定 C 端口、错误修复程序以及其他功能的支持说明。 |
2007 年 4 月 |
此文档针对 Message Queue 4.1 Beta 的第二个发行版。增加了高可用性功能。 |
2007 年 1 月 |
此文档针对 Message Queue 4.1 Beta 的初始发行版。增加了 JAAS 支持说明。 |
2006 年 5 月 |
此文档针对 Message Queue 4.0 的初始发行版。 |
Sun GlassFish Message Queue 是一种功能全面的消息服务,提供符合 Java Messaging Specification (JMS) 1.1 的可靠的异步消息传送功能。此外,Message Queue 还提供 JMS 规范之外的许多功能,以满足大型企业部署的需要。
为了参与 Sun GlassFish Application Server 2.1.1 的发行,创建了 Message Queue 4.4 次要发行版。因此,未提供可单独下载并安装的 Message Queue 4.4 发行版。
本部分介绍了以下有关 Message Queue 4.4 系统要求的主题:
Solaris、Linux、Windows 和 AIX 操作系统平台均支持 Message Queue 4.4。表 1–2 显示了支持的各个平台版本。有关每个平台的硬件要求,请参见《Sun GlassFish Message Queue 4.4 Installation Guide》。
表 1–2 支持的平台版本
系统虚拟化是一项允许多个操作系统 (Operating System, OS) 实例在共享硬件上独立执行的技术。在功能方面,部署到在虚拟化环境中托管的 OS 的软件通常不知道基础平台已被虚拟化。Sun 在所选择的系统虚拟化和 OS 组合上执行其 Sun Java System 产品的测试,以帮助验证 Sun Java System 产品是否能够继续在正确调整大小及配置的虚拟化环境中如在非虚拟化环境中一样运行。有关 Sun 在虚拟化环境中提供的 Sun Java System 产品支持的信息,请参见 http://download.oracle.com/820-4651。
除了特定于平台的要求以外,Message Queue 4.4 还依赖于某些基本组件,必须安装这些组件才能开发和运行 Message Queue 客户端。表 1–3 介绍了这些组件。此外,也可以使用其他版本或供应商实现,但由于它们未经 Sun Microsystems 测试,因此不能获得正式支持。
在适用于 Solaris、Linux 和 Windows 平台的 Message Queue 安装程序中,您可以选择现有 JDK/JRE 或安装 JDK 版本 (1.5.0_15)。
组件 |
支持 | |
---|---|---|
Java Runtime Environment (JRE) |
Message Queue 代理和管理工具 |
J2SETM Runtime Environment 1.5.0_15 或更高版本 JavaTM SE Runtime Environment 1.6.0_10 |
Java Software Development Kit (JDK) Standard Edition |
Java 客户端开发和部署 |
J2SE Development Kit 1.5.0_15 或更高版本 Java SE Development Kit 1.6.0_10 |
表 1–4 显示了一些额外的组件,可以安装这些组件以便为 Message Queue 客户端提供其他支持。您可能不需要列出的所有组件:例如,如果不编写 C 客户端,则将不需要 C 编译器、C++ 运行时库、NSPR 或 NSS。
表 1–4 可选的支持组件
以下各部分介绍了 Message Queue 4.4 以及 Message Queue 4.x 系列中以前发行版的新增功能:
Message Queue 4.4 是一个次要发行版,其中包含很多增强功能以及错误修复程序。本部分介绍了此发行版中包含的新增功能:
由于 JMS 规范没有为代理和客户端之间的通信定义有线通信协议,因此每个 JMS 提供者(包括 Message Queue)都定义并使用了自己的专有协议。这种情况导致无法在 JMS 提供者之间进行互操作。
Message Queue 4.4 中的 JMS 桥接器服务允许 Message Queue 代理将其目的地映射到外部 JMS 提供者中的目的地,从而弥补了该缺陷。此映射可有效地使 Message Queue 代理与外部 JMS 提供者的客户端进行通信。
JMS 桥接器服务支持映射满足下列条件的外部 JMS 提供者中的目的地:
符合 JMS 1.1
支持 JNDI 管理对象
使用类型为 javax.jms.ConnectionFactory 或 javax.jms.XAConnectionFactory 的连接工厂
对于处理的映射,支持将 XA 接口作为资源管理器
许多开源和商业 JMS 提供者都满足这些要求,从而使 JMS 桥接器服务能有效地将 Message Queue 集成到使用其他 JMS 提供者的现有消息传送环境中。
有关 JMS 桥接器服务的详细信息,请参见:
有关 JMS 桥接器服务的体系结构、子组件和功能的信息,请参见《Sun GlassFish Message Queue 4.4 Technical Overview》中的“JMS Bridge Service”。
有关在代理中配置和管理 JMS 桥接器的信息,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Configuring and Managing JMS Bridge Services”。
如前面所述,JMS 规范没有为代理和客户端之间的通信定义有线通信协议。位于 http://stomp.codehaus.org 的 STOMP(Streaming Text Oriented Messaging Protocol,面向流化处理文本的消息传送协议)开源项目定义了一个简单的有线通信协议,采用任意语言编写的客户端都可以使用该协议与支持 STOMP 协议的任何消息传送提供者进行通信。
Message Queue 4.4 通过 STOMP 桥接器服务提供 STOMP 协议支持。利用此服务,Message Queue 代理可以与 STOMP 客户端进行通信。
有关 STOMP 桥接器服务的详细信息,请参见:
有关 STOMP 桥接器服务的体系结构和功能的信息,请参见《Sun GlassFish Message Queue 4.4 Technical Overview》中的“STOMP Bridge Service”。
有关在代理中配置和管理 STOMP 桥接器的信息,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Configuring and Managing STOMP Bridge Services”。
Message Queue 4.4 中还提供了以下增强功能:
UMS 现在提供了下列使用 HTTP GET 的函数以提供多种服务:
ssend:发送简单文本消息。
sreceive:接收简单文本消息。
getBrokerInfo:获取有关代理的信息。
getConfiguration:获取有关 UMS 配置的信息。
debug:打开和关闭 UMS 服务器中的调试日志记录。
ping:与代理通信以确认其处于运行状态。
有关 UMS 的概述,请参见通用消息服务 (Universal Message Service, UMS)。有关 UMS API 的文档,请参见 https://mq.dev.java.net/4.3-content/ums/protocol.html。有关使用多种语言进行编程的示例,请参见 https://mq.dev.java.net/4.3-content/ums/examples/README.html。
Message Queue 现在使用开源映像打包系统 (Image Packaging System, IPS) 进行了打包以便分发,该系统也称为 pkg(5) 系统。添加此打包方法的目的是为了方便 Message Queue 与 Sun GlassFish Enterprise Server 2.1.1 集成。
Message Queue 4.3 是一个次要发行版,其中包含很多增强功能以及错误修复程序。本部分介绍了此发行版中包含的新增功能:
Message Queue 4.3 新增了一项新的通用消息传送服务 (UMS) 和消息传送 API,该 API 允许从任何启用了 http 的设备访问 Message Queue。因此,几乎所有应用程序都可以与任何其他应用程序通信,并从可靠且有保障的 JMS 消息传送中受益。此外,UMS 还为 JMS 消息传送提供了增强的可伸缩性,从而允许消息传送客户端的数量在 Internet 范围内达到相当比例的程度。
下图中显示了基本 UMS 体系结构:
UMS 在 Web 服务器中运行,它与语言和平台无关。UMS 可用作任何非 JMS 客户端应用程序与 JMS 提供者之间的网关。它接收使用 UMS API 发送的消息,将其转换为 JMS 消息,然后通过 JMS 提供者的本机协议将这些消息发送至 JMS 提供者中的目的地。同样,它从 JMS 提供者中的目的地获取消息,将其转换为文本或 SOAP 消息,然后通过 UMS API 将这些消息发送至客户端请求的非 JMS 客户端。
与语言无关且基于协议的简单 UMS API 同时支持基于 Web 和不基于 Web 的应用程序,并且可以与脚本语言和编程语言一起使用。API 以两种样式提供:一种是使用表现状态传输 (Representational State Transfer, REST) 样式协议的简单消息传送 API,另一种是将协议嵌入 SOAP 消息头的 XML 消息传送 API。但是,这两种样式的 API 只需一个 http 请求来发送或接收消息。
UMS API 的简单性和灵活性表现在:AJAX、.NET、Python、C、Java 和许多其他应用程序可以将文本消息和/或 SOAP(带有附件)消息发送至 JMS 目的地,或从 JMS 目的地接收消息。例如,Python 应用程序可以与 .NET 应用程序通信,iPhone 可以与 Java 应用程序通信等等。
对于 Message Queue 4.3,UMS 仅支持将 Message Queue 作为 JMS 提供者。
UMS 并非只可用作上述的简单网关。它还支持有状态客户端会话和无状态客户端会话。根据客户端请求,UMS 可在多个服务请求之间保持客户端应用程序的会话状态。UMS 可以使用容器管理验证和/或配置为使用 Message Queue 代理验证客户端。UMS 还支持事务,从而允许客户端应用程序将多个服务请求作为一个整体进行提交或回滚。
由于 UMS 支持大量客户端同时连接到单个 Message Queue 代理,因此减轻了代理连接服务的负荷,从而实现了最大可伸缩性。此外,还可通过水平缩放增大 UMS 容量,以便允许在 Internet 范围内进行大负荷的消息传送。
由于基于协议的 UMS API 的简单性,在客户端无需任何客户端库。这样,API 便可以在将来进行扩展以实现其他 JMS 功能,而无需升级客户端应用程序。
要使用 UMS,您需要将 UMS 部署到支持 Servlet 2.4 或更高版本规范的 Web 容器中,启动 Message Queue 代理,创建相应的目的地,并编写使用 UMS API 发送或接收消息的消息传送应用程序。
Message Queue 4.3 发行版中包含的 UMS imqums.war 文件安装在以下位置(因平台而异):
可以在适当的情况下重命名 .war 文件。
表 1–5 imqums.war 文件的位置
平台 |
imqums.war 的位置 |
---|---|
Solaris |
/usr/share/lib/imq |
Linux |
/opt/sun/mq/share/lib |
AIX |
IMQ_HOME/lib |
Windows |
IMQ_HOME\lib |
在将 imqums.war 部署到位于 localhost:port 的 Web 容器后,可在以下位置找到 UMS 文档:
http://localhost:port/imqums
或者,也可通过以下方式查找 UMS 文档:
有关配置 UMS 的信息,请参见 https://mq.dev.java.net/4.3-content/ums/config.html。
有关 UMS API 的文档,请参见 https://mq.dev.java.net/4.3-content/ums/protocol.html。
有关使用多种语言进行编程的示例,请参见 https://mq.dev.java.net/4.3-content/ums/examples/README.html。
当前,以下 Web 容器支持 UMS:
Sun GlassFish Enterprise Server 版本 2.1 和版本 3 Prelude
Tomcat 版本 5.5 和 6.0
Message Queue 4.3 提供了 AIX 平台软件包以及一个用于安装这些软件包的安装程序。
Message Queue AIX 实现支持以下软件:
AIX 版本 6.1 或更高版本(通过仅适用于 Unix/Java 的包可支持早期版本的 AIX)
DB2 支持
IBM XL C/C++ 编译器版本 9.0
JDK 1.5 或更高版本
有关安装说明,请参见《Sun GlassFish Message Queue 4.4 Installation Guide》中的第 4 章 “AIX Installation”。
在 AIX 平台上,Message Queue 文件安装在单个 Message Queue 主目录 IMQ_HOME 下。IMQ_HOME 表示目录 mqInstallHome/mq,其中 mqInstallHome 是您在安装该产品时指定的安装主目录(默认情况下为 home-directory/MessageQueue)。
最终的 Message Queue 目录结构与 Windows 平台上的目录结构相同(请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的附录 A “Platform-Specific Locations of Message Queue Data”)。
Message Queue 的 AIX 平台支持包括对 Message Queue C-API 的支持。有关在 AIX 平台上生成和编译 C 应用程序的说明,请参见 XREF。
Message Queue 4.3 新增了一种新的安装程序,以便进行基于 Zip 的分发,而不是本机软件包分发。该安装程序用于为 AIX 平台安装新的 Message Queue .zip 分发包。
新安装程序将 Message Queue .zip 文件解压缩到您具有写入权限(无需超级用户权限)的任何目录中,并且还允许您在 Sun Connection 中注册 Message Queue 安装。
为了最大程度地减小下载包的大小,Java 运行时环境将不再包含在基于 zip 的分发包中(大多数站点已提供 Java 运行时环境)。因此,installer 命令需要通过使用 JAVA_HOME 环境变量或通过在命令行中使用 -j 选项来指定 JDK 或 JRE,如下所示:
$ installer -j JDK/JRE-path
其中 JDK/JRE-path 是指定 JDK 或 JRE 的路径。
将对 Message Queue 4.3 更新的以下平台支持进行认证:
Oracle 11g
Windows Server 2008
Message Queue 4.3 中还包含以下增强功能:
Windows 平台上的 Message Queue 安装目录结构已由以前的版本修改为与 AIX 平台上的目录结构相匹配。将来,Solaris 和 Linux 平台也会采用此目录结构,以便在单台计算机上执行多个安装,以及通过 Sun Connection(Sun 托管的一项服务,可帮助跟踪、管理和维护 Sun 硬件和软件)自动更新 Message Queue(请参见安装程序的 Sun Connection 注册支持)。
以下新属性可用于配置代理:
表 1–6 代理路由和传送属性
属性 |
类型 |
默认值 |
描述 |
---|---|---|---|
imq.transaction.producer.maxNumMsgs |
整型 |
1000 |
生成方可以在单个事务中处理的最大消息数。建议该值小于 5000,以防止资源耗尽。 |
imq.transaction.consumer.maxNumMsgs |
整型 |
100 |
使用方可以在单个事务中处理的最大消息数。建议该值小于 1000,以防止资源耗尽。 |
imq.persist.jdbc.connection.limit |
整型 |
5 |
可以对数据库打开的最大连接数。 |
在 JMX API 中添加了一个新属性和几个复合数据键,如下所示:
在目的地监视 MBean 中添加了 NextMessageID 属性,以提供要传送给使用方的下一条消息的 JMS 消息 ID。
在使用方管理器监视 MBean 中添加了复合数据的 NextMessageID 键,以提供要传送给使用方的下一条消息的 JMS 消息 ID。
在使用方管理器监视 MBean 中添加了复合数据的 NumMsgsPending 键,以提供分发给使用方的消息数。
以下用于列出长期订阅的命令:
list dur [-d topicName]
已增强,以便可选择指定或不指定主题名称。如果不指定主题,该命令会列出所有主题(包括使用通配符命名约定的主题)的所有长期订阅。
Message Queue 4.2 是一个次要发行版,其中包含很多新增功能、一些增强功能以及错误修复程序。本部分介绍了 4.2 发行版中的新增功能,并提供了详细的使用参考:
有关 Message Queue 4.1 和 4.0 中新增功能的信息,请分别参见Message Queue 4.1 的新增功能和Message Queue 4.0 的新增功能。
在 Message Queue 4.2 中,发布者可以将消息发布到多个主题目的地;订阅者可以使用多个主题目的地中的消息。此功能是通过使用包含通配符的主题目的地名称(表示多个目的地)来实现的。通过使用此类符号名称,管理员可以根据需要创建与通配符命名方案保持一致的其他主题目的地。发布者可自动将消息发布到所添加的目的地,订阅者可自动使用其中的消息。(通配符主题订阅者比发布者更常见。)
此功能不适用于队列目的地。
符号主题目的地名称的格式及其使用示例在《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Supported Topic Destination Names”中进行了描述。
通过使用 Message Queue 4.2 中新增的此功能,可以在将消息发送到代理时针对 XML 模式验证文本(不是对象)XML 消息的内容。XML 模式 (XSD) 位置是作为 Message Queue 目的地属性指定的。如果未指定 XSD 位置,则使用 XML 文档中的 DTD 声明来执行 DTD 验证。(XSD 验证包括数据类型和值范围验证,它比 DTD 验证更严格。)
有关使用此功能的信息,请参见XML 有效负荷消息的模式验证。
根据 X/Open 分布式事务模型,分布式事务支持依赖于分布式事务管理器,后者跟踪并管理一个或多个资源管理器所执行的操作。在 Message Queue 4.2 中,Message Queue C-API 支持 XA 接口(位于分布式事务管理器和 Message Queue 之间,作为符合 XA 的资源管理器),以使分布式事务处理环境(如 BEA Tuxedo)中运行的 Message Queue C-API 客户端能够参与分布式事务。
这种分布式事务支持包含以下用于实现 XA 接口规范的新 C-API 函数(以及新参数和错误代码):
MQGetXAConnection() MQCreateXASession()
如果要在分布式事务上下文中使用 C 客户端应用程序,该应用程序必须使用 MQGetXAConnection() 获取连接,并使用 MQCreateXASession() 创建会话以生成和使用消息任何分布式事务的启动、提交和回滚操作都是通过分布式事务管理器提供的 API 进行管理的。
有关使用分布式事务方法的详细信息,请参见《Sun GlassFish Message Queue 4.4 Developer’s Guide for C Clients》中的“Working With Distributed Transactions”。
Message Queue 4.2 提供了一些基于 Tuxedo 事务管理器的编程示例。有关使用这些样例程序的信息,请参见《Sun GlassFish Message Queue 4.4 Developer’s Guide for C Clients》中的“Distributed Transaction Sample Programs”。
分布式事务方法在 Solaris、Linux 和 Windows 平台上均受支持,但到目前为止,仅在 Solaris 平台上对该方法进行了认证。
Message Queue 安装程序已进行了改进,允许在 Sun Connection 中注册 Message Queue,这是 Sun 托管的一项服务,可帮助跟踪、管理和维护 Sun 硬件和软件。
在安装 Message Queue 期间,可以选择在 Sun Connection 中注册 Message Queue。安装的 Message Queue 的相关信息(如发行版本、主机名、操作系统、安装日期以及其他此类基本信息)将安全地传送到 Sun Connection 数据库。Sun Connection 清单服务可帮助您管理 Sun 硬件和软件;更新服务可通知您最新的可用安全修复程序、建议的更新以及增强功能。
有关在 Sun Connection 中注册 Message Queue 的详细信息,请参见《Sun GlassFish Message Queue 4.4 Installation Guide》。
Message Queue 4.2 支持将 MySQL 数据库作为基于 JDBC 的数据存储库。可以将 MySQL Cluster Edition 用作独立代理的 JDBC 数据库,以及增强的代理群集所需的高可用性共享数据存储库。有关将 Message Queue 配置为使用 MySQL 的信息,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Configuring a JDBC-Based Data Store”以及《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Enhanced Broker Cluster Properties”。
除了上述功能以外,Message Queue 4.2 还包含以下增强功能:
远程生成的消息度量
Message Queue 4.2 新增了新的目的地度量,可用于监视代理群集中的目的地。在代理群集中,在给定群集代理上的给定目的地中存储的消息包括在该目的地中直接生成的消息以及从群集的远程代理发送到该目的地的消息。在分析代理群集中的消息路由选择和传送时,了解目的地中有多少消息是本地消息(在本地生成)以及多少消息是远程消息(在远程生成)有时是非常有用的。
Message Queue 4.2 中包含两种新的物理目的地度量数: 远程消息数和远程消息字节总数。新的度量数可通过 imqcmd list dst 和 imqcmd query dst 命令(请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Viewing Physical Destination Information”)和新的 JMX 属性(请参见《Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients》中的“Destination Monitor”)获得。
通配符生成方和通配符使用方信息
通过新的监视数据,提供了支持在目的地名称中使用通配符的信息(请参见为发布者或订阅者提供多个目的地)。例如,与目的地关联的通配符生成方或使用方数可通过 imqcmd query dst 命令(请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Viewing Physical Destination Information”)和新的 JMX 属性(请参见《Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients》中的“Destination Monitor”)获得。此外,通配符信息可通过 ConsumerManager Monitor MBean 和 ProducerManager Monitor MBean 获得。
Support for DN Username Format for Client Authentication
Message Queue 4.2 支持在针对 LDAP 用户系统信息库的客户端连接验证中使用 DN 用户名格式。该支持涉及以下新代理属性(和值):
imq.user_repository.ldap.usrformat=dn
借助于此属性,代理可通过从 DN 用户名格式中提取以下属性所指定的属性值,针对 LDAP 用户系统信息库中的条目验证客户端用户:
imq.user_repository.ldap.uidattr
在执行访问控制操作时,代理将上述属性的值用作用户名。
例如,如果 imq.user_repository.ldap.uidattr=udi,并且客户端验证用户名格式为 udi=mquser,ou=People,dc=red,dc=sun,dc=com ,则将提取 "mquser" 以执行访问控制。
JAAS Authentication Enhancement
Message Queue 4.2 新增了通过 IP 地址以及用户名进行 JAAS 验证的功能。
Message Queue 4.1 是一个次要发行版,其中包含很多新增功能、一些增强功能以及错误修复程序。本部分介绍了 4.1 发行版中的新增功能,并提供了详细的使用参考:
有关 Message Queue 4.0 中新增功能的信息,请参见Message Queue 4.0 的新增功能。
Message Queue 4.1 新增了一个增强的新代理群集。与仅提供消息传送服务可用性(如果代理出现故障,可使用另一个代理提供消息传送服务)的传统代理群集相比,增强的代理群集还提供了数据可用性(如果代理出现故障,另一个代理可使用其持久性消息和状态数据接管消息传送)。
Message Queue 4.1 中新增的高可用性实现使用的是基于 JDBC 的共享数据存储库:群集中的所有代理共享符合 JDBC 的同一数据库,而不是代理群集中的每个代理都具有其自己的持久性数据存储库。如果特定代理出现故障,群集中的另一个代理将接管故障代理的消息传送。在执行此操作时,故障转移代理将使用共享数据存储库中的数据和状态信息。故障代理的消息传送客户端将重新连接到故障转移代理,它可提供不间断的消息传送服务。
Message Queue 4.1 高可用性实现中使用的基于 JDBC 的共享数据存储库本身必须具有高可用性。如果没有高可用性数据库,或者不间断的消息传送对您并不重要,则可以继续使用传统群集,这些群集提供了服务可用性,但不提供数据可用性。
要配置 Message Queue 4.1 增强的代理群集,请为群集中的每个代理指定以下代理属性:
群集成员属性,它们指定代理位于增强的代理群集中,并指定群集 ID 以及群集中的代理 ID。
高可用性数据库属性,它们指定持久性数据模型 (JDBC)、数据库供应商名称以及特定于供应商的配置属性。
故障检测和故障转移属性,它们指定如何检测代理故障以及如何使用故障转移代理处理该故障。
要使用增强的代理群集实现,您必须执行以下操作:
安装高可用数据库。
安装 JDBC 驱动程序 .jar 文件。
为高可用性持久性数据存储库创建数据库模式。
为群集中的每个代理设置高可用性属性。
启动群集中的每个代理。
有关增强的代理群集的概念性讨论及其与传统群集之间的差异,请参见《Sun GlassFish Message Queue 4.4 Technical Overview》中的第 4 章 “Broker Clusters”。有关增强的代理群集的过程和参考信息,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的第 10 章 “Configuring and Managing Broker Clusters”以及《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Cluster Configuration Properties”。
如果已在 Message Queue 4.0 中使用高可用性数据库,并且要切换到增强的代理群集,则可以使用数据库管理器实用程序 (imqdbmgr) 转换为共享持久性数据存储库。另请参见代理群集以了解更多的已知问题和限制。
除了基于文件的内置验证机制以及基于 LDAP 的内置验证机制外,Message Queue 4.1 还新增了 Java 验证和授权服务 (Java Authentication and Authorization Service, JAAS) 支持,它允许将外部验证机制插入到代理中以验证 Message Queue 客户端。
有关代理为符合 JAAS 的验证服务提供的信息的说明以及如何将代理配置为使用此类服务的描述,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Using JAAS-Based Authentication”。
Message Queue 4.1 更改了基于 JDBC 的数据存储库以支持增强的代理群集。为此,将基于 JDBC 的数据存储库格式提高到了版本 410。格式版本 350、370 和 400 均会自动迁移到版本 410。
请注意,基于文件的持久性数据存储库的格式将保持为版本 370,因为没有对其进行任何更改。
Message Queue 4.1 环境配置文件 imqenv.conf 中添加了 IMQ_DEFAULT_EXT_JARS 属性。可以设置此属性,以指定在代理启动时包含在 CLASSPATH 中的外部 .jar 文件的路径名。如果使用此属性指定外部 .jar 文件的位置,则不再需要将这些文件复制到 lib/ext 目录中。外部 .jar 文件可以指 JDBC 驱动程序,也可以指 JAAS 登录模块。下面的样例属性指定了 JDBC 驱动程序的位置。
IMQ_DEFAULT_EXT_JARS=/opt/SUNWhadb4/lib/hadbjdbc4.jar:/opt/SUNWjavadb/derby.jar
Message Queue 4.1 新增了 Sun Java Enterprise System (Java ES) 监视框架支持,它允许使用常见图形界面监视 Java ES 组件。此界面是由一个基于 Web 的控制台(名为 Sun Java System Monitoring Console)实现的。管理员可以使用控制台来查看性能统计信息、创建规则以进行自动监视以及确认警报。如果将 Message Queue 与其他 Java ES 组件一起运行,您可能会发现使用单个界面来管理所有这些组件要更方便一些。
有关使用 Java ES 监视框架监视 Message Queue 的信息,请参见 XREF。
以前,仅允许通过管理方式回滚处于 PREPARED 状态的事务。也就是说,如果作为分布式事务一部分的会话没有正常终止,管理员将无法清除处于某种状态的事务。在 Message Queue 4.1 中,您现在可以使用命令实用程序 (imqcmd) 清除(回滚)处于以下状态的事务:STARTED、FAILED、INCOMPLETE、COMPLETE 和 PREPARED。
为帮助您确定能否回滚特定事务(特别是未处于 PREPARED 状态时),该命令实用程序在 imqcmd query txn 输出中提供了额外的数据:它为启动事务的连接提供连接 ID,并指定事务的创建时间。通过使用此信息,管理员可以确定是否需要回滚事务。通常,管理员应避免提前回滚事务。
在 Message Queue 4.1 中,C 客户端(如 Java 客户端)现在可以连接到固定的代理端口,而不是连接到代理的端口映射器服务动态分配的端口。如果要尝试穿过防火墙,或者由于某种其他原因而需要绕过端口映射器服务,固定端口连接是非常有用的。
要配置固定端口连接,您需要配置代理和 C 客户端运行时环境(连接的两端)。例如,如果要通过 ssljms 将客户端连接到端口 1756,您应该执行以下操作:
在客户端,设置以下属性:
MQ_SERVICE_PORT_PROPERTY=1756
MQ_CONNECTION_TYPE_PROPERTY=SSL
在代理端,按如下所示设置 imq.serviceName.protocolType.port 属性:
imq.ssljms.tls.port=1756
MQ_SERVICE_PORT_PROPERTY 连接属性已反向移植到 Message Queue 3.7 Update 2 中。
Message Queue 4.0 是一个次要发行版,仅限于支持 Application Server 9 PE。它包含几个新增功能、一些增强功能以及错误修复程序。本部分包含此发行版中的新增功能的说明:
在版本 4.0 中进行了一些细微但可能会引起问题的更改,其中之一就是不再使用命令行选项来指定密码。因此,您必须按过时的密码选项中的所述将所有密码存储在一个文件中,或者在出现提示时输入密码。
Message Queue 4.0 中添加了一个符合 Java Management Extensions (JMX) 规范的新 API,用于配置和监视 Message Queue 代理。使用此 API,可以在 Java 应用程序中以编程方式来配置和监视代理函数。在 Message Queue 的早期版本中,只能从命令行管理实用程序或管理控制台访问这些函数。
有关详细信息,请参见《Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients》。
Message Queue 4.0 新增了对客户端在运行时记录连接以及会话相关事件的支持。
有关客户端运行时日志记录以及如何对其进行配置的信息,请参见 Java Dev Guide 的第 137 页。
Message Queue 4.0 新增了一个事件通知 API,它允许客户端运行时环境通知应用程序连接状态更改。连接事件通知允许 Message Queue 客户端侦听关闭和重新连接事件,并根据通知类型和连接状态采取适当的操作。例如,如果发生故障转移,并且客户端重新连接到了其他代理,则应用程序可能希望清除事务状态,并继续执行新事务。
有关连接事件以及如何创建事件侦听器的信息,请参见 Java Dev Guide 的第 96 页。
在 Message Queue 4.0 的命令实用程序 (imqcmd) 中添加了一个新的子命令和几个命令选项,以允许管理员停止代理、在指定时间间隔后关闭代理、销毁连接或设置 Java 系统属性(例如,与连接相关的属性)。
停止代理可使其进入静默状态,以便在关闭或重新启动代理之前处理完所有消息。无法对处于停止状态的代理创建新连接。要停止代理,请输入如下命令。
imqcmd quiesce bkr -b Wolfgang:1756
要在指定的时间间隔后关闭代理,请输入如下命令。(时间间隔指定了在代理关闭之前等待的秒数。)
imqcmd shutdown bkr -b Hastings:1066 -time 90
如果指定了时间间隔,代理将记录一条消息,指出何时关闭代理。例如,
Shutting down the broker in 29 seconds (29996 milliseconds)
当代理等待关闭时,可通过以下方式影响其行为。
继续接受管理 jms 连接。
不接受任何新 jms 连接。
现有 jms 连接将继续工作。
代理无法接管增强的代理群集中的任何其他代理。
imqcmd 实用程序不会阻止,它将向代理发送关闭请求并立即返回。
要销毁连接,请输入如下命令。
imqcmd destroy cxn -n 2691475382197166336
使用 imqcmd list cxn 或 imqcmd query cxn 命令可获取连接 ID。
要使用 imqcmd 设置系统属性,请使用新的 –D 选项。它适用于设置或覆盖 JMS 连接工厂属性或与连接相关的 java 系统属性。例如:
imqcmd list svc -secure -DimqSSLIsHostTrusted=true imqcmd list svc -secure -Djavax.net.ssl.trustStore=/tmp/mytruststore -Djavax.net.ssl.trustStorePassword=mytrustword
有关 imqcmd 命令语法的完整信息,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的第 16 章 “Command Line Reference”。
Message Queue 4.0 的数据库管理器实用程序 imqdbmgr 中添加了一个新的 query 子命令。使用此子命令可显示有关基于 JDBC 的数据存储库的信息,其中包括数据库版本、数据库用户以及是否已创建数据库表。
以下是此命令所显示的信息的示例。
imqdbmgr query |
[04/Oct/2005:15:30:20 PDT] Using plugged-in persistent store: version=400 brokerid=Mozart1756 database connection url=jdbc:oracle:thin:@Xhome:1521:mqdb database user=scott Running in standalone mode. Database tables have already been created. |
Message Queue 4.0 现在支持将 Apache Derby 版本 10.1.1 作为基于 JDBC 的数据存储库提供者。
Message Queue 4.0 新增了对基于 JDBC 的数据存储库的更改,以便进行优化并支持以后的增强功能。为此,将基于 JDBC 的数据存储库格式提高到了版本 400。请注意,在 Message Queue 4.0 中,基于文件的数据存储库版本将保持为 370,因为没有对其进行任何更改。
Message Queue 4.0 添加了两个新属性,它们是在位于停用消息队列中的所有消息上设置的。
JMS_SUN_DMQ_PRODUCING_BROKER 指示生成消息时所在的代理。
JMS_SUN_DMQ_DEAD_BROKER 指示将消息标记为停用的代理。
从 Message Queue 4.0 开始,客户端连接工厂属性 imqSSLIsHostTrusted 的默认值为 false。如果应用程序依赖于以前的默认值 true,则需要对此属性进行重新配置,以将其明确设置为 true。
将代理配置为使用自签名证书时,您可以选择信任主机。在这种情况下,除了指定连接应使用基于 SSL 的连接服务(通过 imqConnectionType 属性)外,还应该将 imqSSLIsHostTrusted 属性设置为 true。
例如,要在代理使用自签名证书时安全地运行客户端应用程序,请使用如下命令。
java -DimqConnectionType=TLS -DimqSSLIsHostTrusted=true ClientAppName
要在代理使用自签名证书时安全地使用命令实用程序 (imqcmd) ,请使用如下命令(用于列出连接器服务)。
imqcmd list svc -secure -DimqSSLIsHostTrusted=true
在以后的发行版中,将不再使用以下功能:
基于消息的监视
基于消息的监视使用代理的可配置度量消息生成方将度量数据写入到 JMS 消息中,然后这些消息将发送到度量主题目的地,具体取决于消息中包含的度量信息类型。之后,可通过编写客户端应用程序来访问度量信息,该应用程序将订阅相应的度量主题目的地、使用其消息并根据需要处理数据。
基于消息的监视功能已被 MQ 4.0 中新增的 JMX 管理 API(请参见JMX 管理 API 支持)所取代。JMX API 更全面(它包含的度量数据比写入到主题目的地中的数据多)且基于 JMX 行业标准。
由于 Message Queue 支持 JMX API,因此没有必要再使用基于消息的监视。Message Queue 文档中将保留与基于消息的监视相关的信息,直至正式弃用该功能。
基于文本的安装程序
所有操作系统平台上都将去除 Message Queue 安装程序的文本模式 (installer -t)。在文本模式下,会在终端窗口中显示纯文本,以模拟图形用户界面 (Graphical User Interface, GUI) 模式的外观。GUI 模式和无提示模式将继续受支持。
平台支持
在以后的发行版中,将不再支持 Windows 2000 和 Red Hat Linux 3。
JMSRA 资源适配器
在 Message Queue 以后的发行版中,Message Queue 的资源适配器 imqjmsra.rar(通常称为 JMSRA)将被新的资源适配器所取代。JMSRA 用于将 Message Queue 与 Sun Java System Application Server 集成在一起。
新的资源适配器同时具备 JMSRA 的现有功能以及其他 Sun JMS 资源适配器的功能,将为 Message Queue 以及 Java EE 5 Application Server 环境中的其他提供者提供专门的支持。同样,它用于将 Message Queue 集成到 Sun GlassFish Enterprise Server 和 Sun Java Composite Application Platform Suite (Java CAPS) 中。
Message Queue 4.4 包含新的错误修复程序,并且还包含在 Message Queue 4.x 系列以前的发行版中修复的错误。
以下各部分列出了在相应发行版中修复的错误:
下表介绍了 Message Queue 4.4 中修复的错误。
表 1–7 Message Queue 4.4 中修复的错误
错误 |
描述 |
---|---|
6242247 |
如果同一计算机上的两个代理具有相同的名称,则 MQ 群集的主代理在启动后会挂起 |
6760937 |
重新启动代理时,代理不会重新连接到数据库 |
6765410 |
当长期订阅已处于活动状态时,主代理发送本地 Interest 2 次会导致从代理出现异常 |
6796506 |
如果在接收远程 PREPARE 回复时超时,则远程 PREPARED 消息在回滚后不会重新传送 |
6821639 |
在 MQRA-DIRECT 模式下恢复应用服务器事务期间,回滚/提交事务出现 Null 指针异常 |
6836364 |
如果通配符订阅者的主题是在订阅之前创建的,则该订阅者不接收远程消息 |
6836749 |
HA(JCAPS):在回滚某个长期订阅并提交消息后,接收消息时出现存储库中已存在确认异常 |
6858905 |
Consumer.destroyConsumer 中出现 ConcurrentModificationException 异常 |
下表介绍了 Message Queue 4.3 中修复的错误。
表 1–8 Message Queue 4.3 中修复的错误
错误 |
描述 |
---|---|
6634033 |
创建客户端时,群集协议没有将 imqConsumerFlowLimit 的值传递到远程代理。 |
6713012 |
如果在远程代理重新启动时,群集中某个代理的使用方被销毁,则将不传送某些消息。 |
6727555 |
代理日志消息 "Max bytes per msg exceeded"(超过每条消息的最大大小(字节))将实际的消息大小和每条消息的最大大小(字节)值进行了互换。 |
6737404 |
JMX 度量需要提供从目的地(主题和队列)分发但要传送给使用方的消息计数。 |
6740568 |
当单个事务中使用的消息过多时,代理抛出异常。 |
6758524 |
列出长期订阅的命令 (imqcmd list dur -d "foo.*") 不接受目的地名称中的通配符。 |
6758952 |
设置 imq.portmapper.hostname=localhost 导致多个代理无法连接到一个群集中。 |
6758817 |
设置 imq.cluster.hostname=localhost(不建议使用)导致不同计算机上的代理无法连接到一个群集中。 |
下表介绍了 Message Queue 4.2 中修复的错误。
表 1–9 Message Queue 4.2 中修复的错误
错误 |
描述 |
---|---|
6581592 |
在文本模式下运行安装程序 (installer –t) 或卸载程序时,“摘要”屏幕将显示包含日志/摘要文件的目录,但不会列出这些文件的名称。 |
6585911 |
安装程序的“JDK 选择”屏幕未正确包含与安装程序捆绑在一起并用于运行安装程序的 JRE。 |
6587112 |
在多字节语言环境中,安装程序“摘要”屏幕显示乱码。 |
6587127 |
在通过引用应答文件以运行安装程序 (installer -a filename -s) 时,如果该应答文件不存在,则错误消息不一致且含混不清。 |
6590969 |
在客户端连接验证中允许使用 DN 用户名格式。 |
6594381 |
如果系统上存在 Message Queue 本地化 RPM 的旧版本,Message Queue 4.1 本地化 RPM 安装(通过在“多语言软件包”屏幕上选中“安装 Message Queue 多语言软件包”复选框来执行此操作)将会失败。 |
6599144 |
在 Java SE 6 上卸载 Message Queue 4.2 时,闪屏和卸载程序将挂起,并且显示灰色空白屏幕,但在 Java SE 5 上,则可以正常工作。 |
6615741 |
如果回滚在使用方事务会话中传送的消息,并且在回滚之前关闭了原始使用方,则不会重新传送这些消息。 |
6629922 |
分布式事务处理程序未按正确的顺序将消息重新传送到非活动使用方。 |
6635130 |
代理在由于目的地已达到内存限制或消息限制而暂停后,不能通知非持久性消息的生成方恢复生成操作。 |
6641117 |
如果回滚在使用方事务会话中传送的消息,并且在回滚之后关闭了原始使用方,则不会重新传送这些消息。 |
6683897 |
尽管配置显示已成功完成,但 Message Queue 安装程序的“摘要”屏幕却报告以下配置错误:在某些计算机上,安装程序无法写入 /dev/sterr。 |
6684069 |
对于在使用方事务中将大量消息传送到远程客户端的代理群集,无法提交事务。 |
6688935 |
端口映射器读取超时的默认值太小。 |
6695238 |
如果代理的安装路径中包含空格,C 客户端应用程序将无法连接到该代理。 |
6710168 |
如果目的地暂停两次并且在两次暂停之间未进行恢复,使用方将不再使用消息。 |
6710169 |
JMX 操作 ConsumerManagerMonitor.getConsumerInfo 始终为确认模式返回 SESSION_TRANSACTED。 |
下表介绍了 Message Queue 4.1 中修复的错误。
表 1–10 Message Queue 4.1 中修复的错误
错误 |
描述 |
---|---|
6381703 |
如果传送消息的代理重新启动,则可能会两次提交处理的远程消息。 |
6388049 |
无法清除未完成的分布式事务。 |
6401169 |
imqcmd 的提交和回滚选项不提示进行确认。 |
6473052 |
自动创建的队列的默认设置应该为循环传送。(MaxNumberConsumers = -1)。 |
6474990 |
代理日志显示 imqcmd list dst 命令发生了 ConcurrentModificationException。 |
6487413 |
限制行为是 REMOVE_OLDEST 或 REMOVE_LOWER_PRIORITY 时发生内存泄漏。 |
6488340 |
代理自旋,并且客户端等待确认回复。 |
6502744 |
代理不遵循停用消息队列具有 1000 个消息的默认限制。 |
6517341 |
当客户端连接到增强的代理群集时,客户端运行时环境需要改进重新连接逻辑,以便允许客户端重新连接,而无论 imqReconnectEnabled 属性值是什么。 |
6528736 |
Windows 自动启动服务 (imqbrokersvc) 在启动过程中崩溃。 |
6561494 |
当两个使用方共享一个会话时,消息将传送到错误的使用方。 |
6567439 |
如果在代理重新启动后提交 PREPARED 事务中生成的消息,这些消息的传送顺序就会不正确。 |
下表介绍了 Message Queue 4.0 中修复的错误。
表 1–11 Message Queue 4.0 中修复的错误
错误号 |
描述 |
---|---|
4986481 |
在 Message Queue 3.5 中调用 Session.recover 时,可能会在自动重新连接模式下挂起。 |
4987325 |
在调用 Session.recover 后,将重新传送的消息的 Redelivered 标志设置为 false。 |
6157073 |
将新连接消息更改为既包含总连接数,也包含服务上的连接数。 |
6193884 |
在使用非 ASCII 字符显示消息的语言环境中,Message Queue 向系统日志输出垃圾消息。 |
6196233 |
无法使用 JMSMessageID 选择消息。 |
6251450 |
在群集关闭过程中,connectList 出现 ConcurrentModificationException。 |
6252763 |
java.nio.HeapByteBuffer.putLong/Int 出现 java.nio.BufferOverflowException。 |
6260076 |
使用 Oracle 存储库,在代理启动后的第一条消息发布完后,消息发布速度变得很慢。 |
6260814 |
对 JMSXUserID 进行处理的选择器始终得到 false 值。 |
6264003 |
队列浏览器显示属于尚未提交的事务的消息。 |
6271876 |
关闭具有未使用消息的使用方时,连接流控制无法正常工作。 |
6279833 |
Message Queue 不允许两个代理使用相同的 JDBC 表。 |
6293053 |
除非清除存储库中的内容(使用 —reset store),否则当系统的 IP 地址更改时,主代理将无法正确启动。 |
6294767 |
Message Queue 代理需要在其打开的网络套接字上设置 SO_REUSEADDR。 |
6304949 |
无法设置 TopicConnectionFactory 的 ClientID 属性。 |
6307056 |
txn 日志成为性能瓶颈。 |
6320138 |
Message Queue C API 无法确定回复标头中的队列名称。 |
6320325 |
即使在 Solaris 上同时安装了 JDK 1.4 和 JDK 1.5,代理有时也会选取前者。 |
6321117 |
多代理群集初始化抛出 java.lang.NullPointerException。 |
6330053 |
从订户提交事务时,JMS 客户端抛出 java.lang.NoClassDefFoundError。 |
6340250 |
支持 C-API 中的 MESSAGE 类型。 |
6351293 |
添加对 Apache Derby 数据库的支持。 |
本部分包含有关 Message Queue 4.4 文档更新的信息:
本部分包含有关 Message Queue 4.4 的兼容性问题。
Sun GlassFish Message Queue 使用的许多接口可能会随着时间的变化而发生更改。《Sun GlassFish Message Queue 4.4 Administration Guide》中的附录 B “Stability of Message Queue Interfaces”根据稳定性对接口进行了分类。接口越稳定,在产品的后续版本中对其进行更改的可能性就越小。
Message Queue 的下一个主要发行版可能新增一些更改,这些更改会使当前的 Message Queue 客户端应用程序与该发行版不兼容。提前提供此信息是为了使用户早做准备。
作为 Sun GlassFish Message Queue 的一部分进行安装的个别文件的位置可能会发生更改。如果现有的应用程序依赖于某些 Message Queue 文件的当前位置,则这些应用程序可能会中断。
Message Queue 3.5 及更早版本的代理可能无法再在具有较高版本代理的群集中运行。
在以后的发行版中,Message Queue 客户端可能无法使用早于 1.5 的 JDK 版本。
在以后的发行版中,Message Queue 客户端可能无法使用早于 1.6 的 JDK 版本。
Message Queue 4.4 文档集包含对 Message Queue 4.3 文档集所做的更新,如下所述:
《Sun GlassFish Message Queue 4.4 Technical Overview》反映了 Message Queue 4.4 中的新增功能。
《Sun GlassFish Message Queue 4.4 Installation Guide》包含在 AIX 平台上安装 Message Queue 的信息。
《Sun GlassFish Message Queue 4.4 Administration Guide》包含次要的错误修复程序、AIX 平台支持,以及用于管理代理群集和将传统群集转换为增强的群集的已修订过程。
《Sun GlassFish Message Queue 4.4 Developer’s Guide for Java Clients》反映了新版本号,但未进行修订。
《Sun GlassFish Message Queue 4.4 Developer’s Guide for C Clients》包含有关在 AIX 平台上构建 C 客户端应用程序的信息。
《Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients》包含 JMX API 中的增强功能。
本部分包含了 Message Queue 4.4 中已知问题的列表。涵盖以下产品领域:
有关当前错误、错误的状态和解决方法的列表,Java Developer Connection™ 成员应参见 Java Developer Connection Web 站点上的 Bug Parade 页。在报告新的错误之前请先查看该页。虽然未列出所有的 Message Queue 错误,但如果您想了解是否已报告了某个问题,可以将该页作为一个很好的起点。
http://bugs.sun.com/bugdatabase/index.jsp
可以免费获得 Java Developer Connection 成员资格,但需要进行注册。有关如何成为 Java Developer Connection 成员的详细信息,请访问 Sun 的 "For Developers" Web 页。
要报告新错误或提交功能请求,请向 imq-feedback@sun.com 发送电子邮件。
本部分介绍了与安装 Message Queue 版本 4.4 相关的问题。
与 Message Queue 4.2 和 4.1 类似,Message Queue 4.4 是由相对较新的安装程序安装的,该安装程序还可安装并升级 Message Queue 所需的 Java Enterprise System (Java ES) 共享组件,例如,JDK、NSS 和 JavaHelp 等。
新 Message Queue 安装程序和旧 Java ES 安装程序(用于安装以前的 Message Queue 版本)不能共享同一个产品注册表。如果 Message Queue 安装程序删除随 Java ES 安装程序安装的 Message Queue 版本并随后安装 Message Queue 4.4,则 Java ES 产品注册表可能会处于不一致的状态。因此,如果运行 Java ES 卸载程序,它可能会误删 Message Queue 4.4 及其依赖的共享组件,即使这些内容并不是它安装的。
升级 Java ES 安装程序所安装的 Message Queue 软件的最佳方法如下所示。
使用 Java ES 卸载程序删除 Message Queue 及其共享组件。
使用 Message Queue 安装程序安装 Message Queue 4.4。
这些问题会影响所有平台上的安装。
“准备安装”屏幕将产品名称显示为 "mq" 而不是 Sun Java System Message Queue 4.3。(错误 6650841)
当安装程序正在安装 Message Queue 4.3 并显示“进度”屏幕时,“取消”按钮处于活动状态。如果此时选择“取消”按钮,则会导致安装不完整或中断。(错误 6595578)
安装程序“摘要”屏幕包含一些链接,单击这些链接时将启动日志或摘要页面查看器。如果使用窗口关闭按钮 "X" 关闭此查看器窗口,而不是使用标有“关闭”的按钮,则无法重新打开此查看器窗口。(错误 6587138)
解决方法:使用标有“关闭”的按钮关闭此窗口。
当计算机系统上装有旧版本的 Message Queue 和 NSS/NSPR 时,安装程序的“升级”屏幕仅列出需要升级的 Message Queue;它不会提到还需要升级 NSS 和 NSPR。不过,所有相关软件仍会得到升级(如“准备安装”屏幕所示,其中显示了正确信息)。(错误 6580696)
“JDK 选择”屏幕上的 JDK 列表处于活动状态,即使在未选择“选择 JDK”选项时。(错误 6650874)
使用 Message Queue 卸载程序时,单击“取消”(而不是“删除”)仍将删除一些安装程序文件,并且以后的卸载操作会失败。(错误 6760416)
如果在执行了跳过注册步骤的无提示安装后以仅注册模式 (installer -r) 运行安装程序,则会导致注册失败,同时显示 "Premature end of file"(文件过早结束)错误。(错误 6767988)
在以前安装了 Open Message Queue 的计算机上运行 Message Queue 4.3 安装程序时,您可能会看到以下警告消息:"Error reading previous session data from Config-State"(从配置状态读取以前的会话数据时出现错误)。(错误 6764305)
解决方法:该消息是无害的,在安装完成后便不会再出现。或者,您可以删除 /var/install/config/mq/InstallDirectory.xcu 文件以避免出现该消息。
在未安装 JDK 的计算机上运行基于 zip 的 Message Queue 安装程序时,会显示以下错误消息:"Invalid root in registry key HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion"(注册表主键 HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion 中的根目录无效)。(错误 6764358)
解决方法:在运行安装程序之前安装 JDK。
在单击“准备安装”屏幕上的“安装”按钮之前,Message Queue 安装程序已创建了 mqInstallHome 目录。(错误 6595590)
如果在未安装 Message Queue 的情况下尝试以文本模式 (installer -t -r) 注册 Message Queue,则会抛出 NullPtr 异常。(错误 6760991)
解决方法:在尝试注册安装之前,安装 Message Queue。
在 Windows 上安装 Message Queue 时,请注意以下限制。
Windows 平台上的 Message Queue 4.3 安装目录结构不同于以前发行版的目录结构。请参见《Sun GlassFish Message Queue 4.4 Installation Guide》中的“Installed Directory Structure”。
安装程序没有在“开始”>“程序”菜单中添加 Message Queue 条目。(错误 6567258)
解决方法:要启动管理控制台,请使用《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Starting the Administration Console”所示的命令行。
安装程序没有将 IMQ_HOME\mq\bin 目录添加到 PATH 环境变量中。(错误 6567197)
解决方法:在调用 Message Queue 实用程序 (IMQ_HOME\mq\bin\ command) 时,用户需要将此条目添加到其 PATH 环境变量中,或者提供完整的路径名。
安装程序没有将条目添加到 Windows 注册表中,以表明安装了 Message Queue。(错误 6586389)
安装程序没有将 Message Queue 代理添加为 Windows 服务。
解决方法:使用 imqsvcadm 命令手动将 Message Queue 代理添加为 Windows 服务。
如果没有安装 JDK,安装程序会抛出以下错误:"Invalid root in registry key HKLM\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\CurrentVersion"(注册表主键 HKLM\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\CurrentVersion 中的根目录无效)。(错误 6764358)
解决方法:如果出现此错误,则安装 JDK,然后继续操作。
在无提示模式下使用应答文件运行安装程序时,该程序将立即返回。确实执行了安装;但用户无法知道无提示安装实际上是何时完成的。(错误 6586560)
如果尝试在 Windows 上以文本模式运行安装程序 (installer –t),则会导致以英语显示一条错误消息,即使安装程序在非英语环境中运行。Windows 上不支持文本模式。(错误 6594142)
安装程序在 C:\ 上安装 Message Queue,即使操作系统安装在其他驱动器上也是如此。(错误 6673511)
对于 Windows 上的安装和卸载,用户无法运行 .bat 文件,也无法使用 Windows 控制面板中的“添加/删除程序”进行卸载。(错误 6673417)
在 Windows Vista 上,无法在 C:\Program Files 下安装 Message Queue,除非以管理员身份从命令提示符进行安装。(错误 6701661)
解决方法:以管理员身份通过命令提示符进行安装:
1.“开始”->“程序”->“附件”->“命令提示符”。
2. 右键单击“命令提示符”。
3. 选择“以管理员身份运行”。
4. 转到 Message Queue 4.2 安装映像所在的目录。
5. 运行 installer.vbs。
在模拟运行模式下运行卸载程序 (uninstaller -n) 时,它将错误地执行卸载。(错误 6719051)
解决方法:使用以下命令执行无提示安装:
uninstaller -s
安装程序主目录页上的 "Install Home" 字符串没有进行本地化。(错误 6592491)
基于 Zip 的 Message Queue 卸载程序在 Windows 2003 上挂起。(错误 6764370)
解决方法:手动删除 mqInstallHome 目录。
在模拟运行模式 (installer –n) 下运行安装程序时,“摘要”屏幕会显示一些错误消息,并且还会显示“不完整”安装状态。这是不正确的并且会误导用户;模拟运行不会在系统上安装任何内容;它仅创建一个可随后用于执行无提示安装的应答文件。(错误 6594351)
在无提示安装模式下使用应答文件运行安装程序 (installer -a filename -s) 时,该程序不执行 Sun Connection 注册。(错误 6710268)
在文本模式下运行安装程序时,以及在输入用户名或密码进行 Sun Connection 注册或创建联机帐户时,无法使用 Backspace 键更正用户名或密码。(错误 6673460)
解决方法:使用 Control-H 组合键而不是 Backspace 键,或者使用其他终端仿真器,如 dtterm 或 xterm。
安装程序上的“升级”屏幕并未始终正确报告现有的 Message Queue 安装版本或安装程序引擎版本。(错误 6679765)
如果在文本模式下使用安装程序并尝试使用无效的用户名和密码进行 Sun Connection 注册,安装程序将显示“无法注册”对话框、抛出 Null 指针异常并退出。(错误 6666365)
以下问题会影响 Linux 平台上的安装:
在 Redhat Linux 5 上,运行 C 客户端应用程序所需的 compat-libstdc++ 库未包含在 Message Queue 分发包中,因此 Message Queue 安装程序未对其进行安装。如果要开发并运行 C 客户端,则需要手动安装此库。
通常,在您所用的 Linux 版本的安装介质中,可以找到 compat-libstdc++ rpm。可使用以下命令对其进行安装:
rpm -ivh compat-libstdc++-x-x.x.x.x..rpm
其中 x 表示版本号。
要检查是否已成功安装该库,请使用以下命令:
rpm -qa | grep compat-libstdc++
在“JDK 选择”面板上,滚动列表仅显示一项。这使得在列表中选择其他 JDK 变得非常困难。(错误 6584735)
如果 JDK 是最新的,并且用户在“JDK 选择”屏幕上选择了“安装默认 JDK”,则安装程序仍会尝试安装 JDK,并报告无法安装软件包。尽管出现此问题,但安装已成功完成。(错误 6581310)
如果当前安装的 JDK 版本比 JDK 1.5.0_15(Message Queue 安装程序通常安装的版本)高,Message Queue 卸载程序将找不到默认的 IMQ_JAVAHOME 目录并返回错误。(错误 6673415)
解决方法:在运行 Message Queue 卸载程序之前,按如下所述手动安装 JDK 1.5。
# cd installImage/Product/UNIX/LINUX/X86/2.4/Packages
# rpm -i --force jdk-1.5.0_15–linux- arch.rpm
其中 arch 为 i586 或 amd64。
在模拟运行模式 (installer –n) 下运行安装程序时,“摘要”屏幕会显示一些错误消息,并且还会显示“不完整”安装状态。这是不正确的并且会误导用户;模拟运行不会在系统上安装任何内容;它仅创建一个可随后用于执行无提示安装的应答文件。(错误 6594351)
在 64 位 Linux 上无法以文本模式运行 Message Queue 安装程序。(错误 6771303)
解决方法:如果您尝试从终端窗口进行远程安装,则必须使用某个远程显示软件以在 GUI 模式下运行安装程序。
安装程序未明确显示 Message Queue 版本信息。(错误 6586507)
在 Solaris 平台上,请参见下表以确定安装程序显示的 Message Queue 版本。
表 1–12 版本字符串转换
Solaris OS 上的安装程序显示的版本 |
对应的 Message Queue 发行版 |
---|---|
4.3.0.0 |
4.3 |
4.2.0.0 |
4.2 |
4.1.0.2 |
4.1 Patch 2 |
4.1.0.1 |
4.1 Patch 1 |
4.1.0.0 |
4.1 |
3.7.2.1 |
3.7 UR2 Patch 1 |
3.7.0.2 |
3.7 UR2 |
3.7.0.1 |
3.7 UR1 |
3.6.0.0 |
3.6 |
3.6.0.4 |
3.6 SP4 |
3.6.0.3 |
3.6 SP3 |
3.6.0.2 |
3.6 SP2 |
3.6.0.1 |
3.6 SP1 |
对于 3.6 SP4 修补程序发行版(如 3.6 SP4 Patch 1),安装程序显示的发行版字符串保持不变。您需要运行 imqbrokerd -version 命令以确定确切的版本。
在 Linux 平台上,安装程序显示的版本号采用以下格式。
majorReleaseNumber.minorReleaseNumber-someNumber
例如,3.7–22。它仅告诉我们这是 3.7 发行版之一,但没有指出具体的版本。要确定安装的 Message Queue 版本,请运行以下命令:
imqbrokerd -version。
以下问题与本地化问题有关。
在非英语语言环境中以文本模式运行安装程序 (installer –t) 时,多字节字符将显示为乱码。(错误 6586923)
在安装程序“进度”屏幕上,进度栏显示奇怪的字符。在非英语语言环境中,工具提示是固定编码的。(错误 6591632)
Windows 上不支持文本模式 (installer –t)。如果在 Windows 上以文本模式运行安装程序,则会显示错误消息。在非英语语言环境中运行安装程序时,不会本地化此消息。(错误 6594142)
无论在哪种语言环境中运行安装程序,安装程序的“许可证”屏幕都会显示英语许可证文本。(错误 6592399)
解决方法:要访问本地化的许可证文件,请查看 LICENSE_MULTILANGUAGE.pdf 文件。
未本地化安装程序使用帮助文本。(错误 6592493)
安装程序摘要 HTML 页上显示的字符串 "None" 是用英语固定编码的。(错误 6593089)
在德语语言环境中运行安装程序时,“欢迎”屏幕未显示在其他语言环境中看到的完整文本。(错误 6592666)
安装程序“安装主目录”屏幕上显示的字符串 "Install Home" 没有进行本地化。即使在非英语语言环境中运行安装程序,也会以英语显示该字符串。(错误 6592491)
在文本模式下运行安装程序 (installer –t) 时,无论在哪种语言环境中运行安装程序,都会使用英语响应选项 "Yes" 和 "No"。(错误 6593230)
安装程序“JDK 选择”屏幕上的浏览器按钮工具提示是使用英语固定编码的。(错误 6593085)
在以前版本的 Message Queue 中,可以对以下命令使用 —p 或 —password 选项以交互方式指定密码:imqcmd、imqbrokerd 和 imdbmgr。从 4.0 版开始,将不再使用这些选项。
您可以创建一个密码文件以指定相关密码并使用 -passfile 命令选项引用该密码文件,或者在出现命令提示时直接输入密码。
密码文件可以包含以下列出的一个或多个密码。
用于打开 SSL 密钥库的密钥库密码。可使用 imq.keystore.password 属性指定此密码。
LDAP 系统信息库密码,用于在非匿名连接的情况下与 LDAP 目录进行安全连接。可使用 imq.user_repository.ldap.password 属性指定此密码。
用于连接到符合 JDBC 的数据库的 JDBC 数据库密码。可使用 imq.persist.jdbc.vendorName.password 属性指定此密码。属性名称的 vendorName 组件是用于指定数据库供应商的变量。选项包括 hadb、derby、pointbase、oracle 或 mysql。
imqcmd 命令(用于执行代理管理任务)的密码。可使用 imq.imqcmd.password 属性指定此密码。
在以下示例中,在密码文件中将 JDBC 数据库的密码设置为 abracadabra。
imq.persist.jdbc.mysql.password=abracadabra
可通过以下某种方法使用密码文件。
通过在代理的 config.properties 文件中设置以下属性,将代理配置为使用密码文件。
imq.passfile.enabled=trueimq.passfile.dirpath=passwordFileDirectoryimq.passfile.name=passwordFileName
使用相关命令的 -passfile 选项,例如:
imqbrokerd -passfile passwordFileName
以下是有关管理和配置 Message Queue 的问题
在 Windows 平台上,您需要使用 imqsvcadm 命令将 Message Queue 代理手动添加为 Windows 服务。安装程序不会为您执行此操作。
在 Windows 平台上,必须使用防火墙规则手动配置内置的 Windows 防火墙(默认情况下处于启用状态),以允许代理接受从客户端传入的连接。(错误 6675595)
在控制面板中双击“Windows 防火墙”。
必须在“用户帐户控制”对话框中单击“继续”才能打开“Windows 防火墙设置”对话框。
在“Windows 防火墙设置”对话框中,单击“例外”选项卡。
单击“添加程序”。
在“添加程序”对话框中,选择 java.exe,然后单击“浏览”。
Windows 将代理进程标识为 Java Platform SE 二进制文件。因此,请查找代理使用的 java.exe(通常位于 jdk1.5.0_15\jre\bin\java.exe)。
单击“更改范围”。
在“更改范围”对话框中,选择“任何计算机(包括 Internet 上的计算机)”。
单击“确定”。
在“添加程序”对话框中,单击“确定”。
在“Windows 防火墙设置”对话框中,单击“确定”。
在 Windows 平台上,当 CLASSPATH 包含双引号时,imqadmin 和 imqobjmgr 命令将抛出错误。(错误 5060769)
解决方法:打开命令提示符窗口并取消设置 CLASSPATH:
set classpath=
然后,在相同的命令提示符窗口中运行所需的命令,例如:
mqInstallHome\mq\bin\imqadmin
如果提供的值中包含空格,则所有 Solaris 和 Windows 脚本中的 -javahome 选项都不起作用。(错误 4683029)
Message Queue 命令和实用程序使用 javahome 选项来指定要使用的备用 Java 2 兼容运行时。但是,备用 Java 运行时的路径名不能包含空格。以下是包含空格的路径示例。
Windows:C:\jdk 1.4
Solaris:/work/java 1.4
解决方法:在不包含空格的位置或路径中安装 Java 运行时环境。
imqQueueBrowserMaxMessagesPerRetrieve 属性指定客户端运行时环境在浏览队列的内容时一次检索到的最大消息数。该属性影响将排队消息成批传送到客户端运行时环境的方式,而不会影响浏览的消息总数。该属性仅影响浏览机制,而不影响队列消息传送。(错误 6387631)
以下问题将影响 Message Queue 代理。
如果持久性数据存储库打开过多目的地,将无法访问代理。(错误 4953354)
解决方法:这种情况是由于代理达到了系统打开文件描述符限制所致。在 Solaris 和 Linux 上可使用 ulimit 命令来增加文件描述符限制。
目的地被销毁后,使用方将被孤立。(错误 5060787)
目的地被销毁后,活动的使用方将被孤立。使用方孤立后,他们将不再接收消息(即使重新创建了目的地)。
使用 HTTP 连接服务的 JMS 客户端突然终止时(例如,使用 Ctrl-C 组合键),代理要花费大约一分钟的时间才能释放客户端连接和所有关联的资源。
如果在这一分钟内客户端的另一个实例启动,并且该实例尝试使用同一个客户端 ID、长期订阅或队列,则可能会收到“客户端 ID 已经在使用”的异常。这实际上不是什么问题,只是上述终止过程的副作用。如果客户端在延迟约一分钟后启动,则应当一切正常。
将 MySQL 数据库用作数据存储库时,如果存储的消息超过 1 MB,则会抛出 "Packet for query is too large..."(查询数据包太大...)SQL 异常。(错误 6682815)
解决方法:启动 MySQL 服务器并将 --max_allowed_packet 选项的值设置为大于 1 MB(默认值)。例如,使用以下值:
--max_allowed_packet=60M
将 MySQL 数据库用作高可用性共享数据存储库时,需要使用一种机制将 MySQL 存储引擎配置为 NDBCLUSTER。(错误 6691394)
解决方法:将以下属性值添加到代理的 config.properties 文件中(请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Enhanced Clusters: JDBC Configuration Properties ”)
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
在使用 Oracle 9i (JDBC 9.2.0.x) 驱动程序时,代理会抛出 "Failed to persist property..."(未能使属性保持持久...)异常。(错误 6626825)
解决方法:使用 Oracle 10g (JDBC 10.2.0.x) 驱动程序,已针对该驱动程序优化了代理。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
如果将 Java DB 数据库用作数据存储库,则会在存储消息时抛出以下 SQL 异常:“无法在请求的时间内获取锁定”。(错误 6691394)
解决方法:在代理的 config.properties 文件中添加以下属性值:
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
以下问题影响代理群集。
本发行版中只支持完全连接的代理群集。这意味着群集中的每个代理均必须与群集中的其他所有代理直接通信。如果使用 imqbrokerd -cluster 命令行参数将代理连接到传统群集,请务必小心以确保包含了群集中的所有代理。
如果将客户端连接到增强的代理群集中的代理,客户端运行时环境将尝试重新连接,直至成功为止(它忽略 imqAddressListIterations 连接工厂属性的值)。
客户端只能浏览位于其主代理上的队列内容。此客户端仍可以向任何队列发送消息,或使用来自群集中任何队列的消息,此限制只影响队列浏览。
在包含 4.3 版代理的传统群集中,所有代理必须为 3.5 或更高版本。
默认情况下,群集中的 Message Queue 4.3、4.2 和 4.1 代理无法与 Message Queue 3.7 或 3.6 代理进行互操作,因为这些版本的 imq.autocreate.queue.maxNumActiveConsumers 默认值并不相同。(错误 6716400)
解决方法:更改 imq.autocreate.queue.maxNumActiveConsumers 的值以确保所有代理具有相同的值,这通常是通过更改 Message Queue 4.3、4.2 和 4.1 配置以与 3.7 或 3.6 代理所使用的配置相匹配来实现的(默认情况下,从值 -1 更改为以前版本的默认值 1)。
要将 Message Queue 4.3(或 4.x)代理添加到 Message Queue 3.x 代理群集中,必须运行主代理。(错误 6763796)
在从传统群集转换为增强的群集时,可以按照《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Cluster Conversion: JDBC-Based Data Store”所述,使用 Message Queue 数据库管理器实用程序 (imqdbmgr) 将现有的基于 JDBC 的独立数据存储库转换为共享 JDBC 数据存储库。
使用 HADB 的代理无法处理大于 10 MB 的消息。(错误 6531734)
如果 HADB 存储库存储的消息超过 10,000 个,则使用 imqdbmgr upgrade hastore 命令转换为 HADB 存储库的操作可能会失败,并显示“设置的锁定太多”消息。(错误 6588856)
解决方法:使用以下命令增加锁定数。
hadbm set NumberOfLocks=<desiredNumber>
有关其他信息,请参见 Sun Java System Application .Server 9.1 Enterprise Edition Troubleshooting Guide 中的 "HADB Problems"。
如果在一个事务中提交的远程消息超过 500 个,代理可能会返回错误 "HADB-E-12815: Table memory space exhausted"(HADB-E-12815:表内存空间已用尽)。(错误 6550483)
有关其他信息,请参见 Sun Java System Application .Server 9.1 Enterprise Edition Troubleshooting Guide 中的 "HADB Problems"。
在代理群集中,代理会对要传送到尚未打开的远程连接的消息进行排队。(错误 4951010)
解决方法:一旦打开远程连接,这些消息将会由使用方接收。如果该使用方的连接保持关闭状态,这些消息将重新传送给另一个使用方。
如果在一个事务中使用多个来自远程代理的消息,则可能会在该代理中记录以下错误消息。该消息是无害的,可以将其忽略:
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Message acknowledgement failed from mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Reason = Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] WARNING Notify commit transaction [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.r
如果 imq.txn.reapLimit 属性与一个事务中的远程消息数相比较小,当通知将事务中的后续消息提交到消息主代理时,将会记录此消息。(错误 6585449)
解决方法:要避免出现此消息,请增大 imq.txn.reapLimit 属性的值。
在 Windows 平台上,事务管理器监视 MBean 的 getTransactionInfo 方法将返回具有错误事务创建时间的事务信息。(错误 6393359)
解决方法:改用事务管理器监视 MBean 的 getTransactionInfoByID 方法。
您需要注意与 SOAP 支持有关的两个问题
从 Message Queue4.0 发行版开始,将不再为 SOAP 管理的对象提供支持。
SOAP 开发依赖于以下几个文件:SUNWjaf、SUNWjmail、SUNWxsrt 和 SUNWjaxp。在 Message Queue 4.1 版中,仅当运行带有 JDK 1.6.0 或更高版本的 Message Queue 时,才能使用这些文件。
以前,SAAJ 1.2 实现 .jar 直接引用 mail.jar。在 SAAJ 1.3 中删除了此引用,因此 Message Queue 客户端必须将 mail.jar 明确放入 CLASSPATH 中。
Sun GlassFish Message Queue 4.4 中包含以下一组文件,您可以使用这些文件,并以二进制格式自由分发它们:
fscontext.jar |
jaas.jar |
imq.jar |
jms.jar |
imqjmx.jar |
libmqcrt.so (HPUX) |
imqxm.jar |
libmqcrt.so (UNIX) |
imqums.war |
mqcrt1.dll (Windows) |
此外,还可以再分发 LICENSE 和 COPYRIGHT 文件。
欲获得自本介质发行以来所发布的辅助功能,请联系 Sun 索取有关 "Section 508" 法规符合性的产品评估文档,以便确定哪些版本最适合部署辅助功能解决方案。可以在 http://sun.com/software/javaenterprisesystem/get.html 找到应用程序的更新版本。
有关 Sun 在辅助功能方面所做出的努力,请访问 http://sun.com/access。
如果您在使用 Sun GlassFish Message Queue 期间遇到问题,请通过以下方式与 Sun 客户支持部门联系。
位于 http://www.sun.com/service/sunone/software 的 Sun 软件支持联机服务。
此站点上有一些链接,通过这些链接可以访问知识库、联机支持中心和 Product Tracker,还可了解维护方案以及用于联系支持部门的电话号码。
随维护合同一起分发的电话号码。
为了使我们能更好地帮助您解决问题,请在联系客户支持时提供以下信息:
问题描述,包括问题出现时的情况及其对您的操作的影响。
计算机类型、操作系统版本和产品版本,包括可能影响问题的所有修补程序和其他软件。
用来再现该问题的详细步骤。
所有错误日志或核心转储。
以下位置提供了一个 Sun GlassFish Message Queue 论坛:
http://swforum.sun.com/jive/forum.jspa?forumID=24
我们欢迎您的参与。
您可能会对 Java 技术论坛中的 JMS 论坛感兴趣。
Sun 致力于提高其文档的质量,并十分乐意收到您的意见和建议。
要共享您的意见,请访问 http://docs.sun.com,并单击 "Send Comments"。在联机表单中,请提供文档标题和文件号码。文件号码是一个七位或九位的数字,可以在书的标题页或文档的顶部找到。例如,本书的书名是《& 发行说明》,文件号码是 821-0894。
从以下 Internet 位置可以找到有用的 Sun GlassFish 信息:
文档
专业服务
软件产品和服务
软件支持服务
支持和知识库
Sun 支持和培训服务
咨询和专业服务
开发者信息
Sun 开发者支持服务
软件培训