Sun GlassFish Message Queue 4.4 Update 1 发行说明

Message Queue 4.4 Update 1 和较新发行版中修复的错误

Message Queue 4.4 Update 1 包含新的错误修复程序,并且还包含在 Message Queue 4.x 系列以前的发行版中修复的错误。

以下各部分列出了在相应发行版中修复的错误:

Message Queue 4.4 Update 1 中修复的错误

下表介绍了 Message Queue 4.4 Update 1 中修复的错误。其中一些问题标记为 "(OpenMQ)",这表示该问题已在 Open Message Queue 开源项目中修复,Sun GlassFish Message Queue 以此开源项目为基础。

表 1–7 Message Queue 4.4 Update 1 中修复的错误

错误 

描述 

6590909 

覆盖地址列表时,DIRECT 模式 MDB 没有连接到远程代理 

6616704 

在会话内创建了很多使用方时,代理内存会增加 

6745761 

在同一 XA TX 中使用两个连接时(通过 JMSJCA),XAResource.isSameRM() 应返回 true 

6745763 

在同一 XA TX 中使用两个连接时(JMSRA DIRECT 模式),XAResource.isSameRM() 应返回 true 

6745768 

在同一 XA TX 中使用两个连接时 (JMSRA LOCAL/REMOTE),XAResource.isSameRM() 应返回 true 

6760450 

如果重新引导机器时没有停止 MQ (GF) 实例,则会破坏消息存储库 

6766241 

UMS: SendMsg.html AJAX 示例将 /ums 用作默认上下文根目录。应该使用 /imqums 

6766852 

DirectXAResource 将代理 CONFLICT 状态转换为 "TxID is already in use"(TxID 已在使用中) 

6799428 

无法使用但可以浏览 DMQ 中的非持久性消息/非长期存放消息。 

6799428 

无法使用但可以浏览 DMQ 中的非持久性消息/非长期存放消息。 

6809353 

使用 posgtresql (8.1) 的 openmq 4.3 HA 不起作用(imqbrokerd 无法启动) 

6809750 

客户端 ID 连接无法通过 JMSRA 进行连接入池。 

6812198 

使用 MQ 主题度量监视时抛出 Classcast 异常 

6832000 

MQ reapExcessConnection JDBC 连接进入“高 CPU”自旋 

6833109 

MQClusterMonitor JMX 样例应用程序在使用 JDK6 的 AIX 中抛出异常 

6835420 

NoGCDefault 的默认值计算错误。内存较低时可能导致过多 GC。 

6852018 

错误消息 "Cannot add durable consumer{0}. No ClientID was set on connection."(无法添加长期使用方 {0}。连接上未设定客户端 ID。)会误导用户 

6856991 

代理重新启动然后回滚长期使用方 PREPARED 事务后发生 NullPointerException 

6874125 

WARNING: MQJMSRA_DC2001: connectionId=555670328604044289:_destroy(): 对未关闭的连接调用 

6878945 

RFE: JMSBridge: 允许指定用户名/密码以从连接工厂创建连接 

6881493 

不应为 HA 代理存储管理临时目的地 

6881753 

RFE JMSBridge: 允许在传输到目标之前使用 jmsbridge 名称标记每条消息 

6884673 

MQ 4.4 代理无法与 MQ 3.7/3.6 代理建立群集连接 

6886390 

传送至 DMQ 的持久/Txn 发布的消息可导致从 DMQ 使用它们时发生“找不到 mq.sys.dmq”错误 

6886515 

使用 JMX 删除嵌入式代理中的目的地时发生 AccessControlException 

6890628 

设置代理属性“imq.autocreate.destination.isLocalOnly=true”没有效果 

6891615 

在 glassfish 中运行代理 4.3 时选定器并非始终正常工作 

6891624 

"imqcmd list dst" 中的“远程”消息数可大于“计数”消息数 

6891629 

选定器中出现计算异常时需要用户友好消息 

6891717 

如果 imq.transaction.autorollback=true,则未清除 autorollback PREPARED 确认会导致 TransactionAckExistEx 

6891802 

接管远程 tx 确认后重新启动代理时,会显示 "[B4061]:Can not use Transaction ID..currently in use"([B4061]:无法使用事务 ID。当前正在使用”) 

6892512 

内存泄漏:调用 tempDest.delete() 时没有从连接中删除临时目的地 

6895040 

如果主代理有临时目的地,则从代理无法在 uidprefix 锁定超时后启动 uidprefix 

6896230 

与从代理同步后,重新启动主代理时,在主代理中创建的新使用方可能无法传播到所有代理 

6896764 

TransactionAcknowledgement 中的 equals 方法不正确。 

6898355 

重新启动代理时,群集管理员初始化过程中会复位接管锁定,而不等待接管完成 

6901405 

RFE: 记录 JDBC 供应商信息和供应商属性(如果指定) 

16 (OpenMQ) 

在 glassfish 中运行代理 4.3 时选定器并非始终正常工作 

17 (OpenMQ) 

使用 posgtresql (8.1) 的 openmq 4.3 HA 不起作用(imqbrokerd 无法启动) 

22 (OpenMQ) 

安装程序引用不存在的二进制文件并失败 

25 (OpenMQ) 

创建 TemporaryTopic 时发生内存泄漏。 

29 (OpenMQ) 

代理隔离 

30 (OpenMQ) 

"imqcmd list dst" 中的“远程”消息数可大于“计数”消息数 

31 (OpenMQ) 

选定器中出现计算异常时需要用户友好消息 

32 (OpenMQ) 

修复 int-> long 溢出 

33 (OpenMQ) 

OpenMQ 安装程序:在 ja 语言环境下运行时出现 "Invalid SwiXML Descriptor"(无效的 SwiXML 描述符)错误 

Message Queue 4.4 中修复的错误

下表介绍了 Message Queue 4.4 中修复的错误。

表 1–8 Message Queue 4.4 中修复的错误

错误 

描述 

6242247 

如果同一计算机上的两个代理具有相同的名称,则 MQ 群集的主代理在启动后会挂起  

6760937 

重新启动代理时,代理不会重新连接到数据库  

6763252 

确认消息已过期/已删除消息时,代理应记录比 NPE 更有意义的消息 

6765410 

当长期订阅已处于活动状态时,主代理发送本地 Interest 2 次会导致从代理出现异常 

6796506 

如果在接收远程 PREPARE 回复时超时,则远程 PREPARED 消息在回滚后不会重新传送 

6807708 

如果没有运行主代理,则 TemporaryDestination.delete 会失败 

6812037 

RFE: 如果 MQMessageListenerFunc 返回错误,则会将 MQ_CALLBACK_RUNTIME_ERROR 传递到 afterMessageDelivery 

6812755 

如果 before/afterMessageDelivery 回调返回错误,则 FINE 级别日志消息应为 WARNING 

6816023 

发生非法字符异常时,Message.setStringProperty() 异常没有显示属性名称 

6819095 

RFE: 群集应支持设置输入/输出流缓冲区大小和 TcpNoDelay 

6820585 

在等待远程代理完成时,"imqcmd list txn" 没有显示 COMMITTED 群集事务 

6820588 

使用本地和远程消息的群集事务在等待状态中保持为 COMMITTED 

6821639 

在 MQRA-DIRECT 模式的 AS 恢复期间,rollback/commitTransaction 出现 NPE 

6823364 

RFE: 将 C-API 编译器升级为 Solaris 中的 Sun Studio 12 

6829113 

重负载下,在 Tuxedo TM 回滚超时事务时发生 ConcurrentModificationException 

6832197 

如果客户端没有请求 ackack,非事务性远程确认不应等待远程回复 

6834735 

Tuxedo TM 超时处于 START 状态的 txn 时,出现模糊的日志消息 "Unexpected Broker Interal Error"(意外的代理内部错误) 

6836364 

如果通配符订阅者的主题先于订阅者创建,则该订阅者不会接收远程消息  

6836691 

HA(JCAPS): XA 接收器回滚并提交消息之后,接收时出现“消息已删除”异常 

6836749 

HA(JCAPS): 在回滚某个长期订阅并提交消息后,接收消息时出现“存储库中已存在确认”异常 

6837671 

HA(JCAPS): XAResourceImpl.rollback 在成功提交后无限重新传送已提交的消息 

6839193 

RFE: 将 C++ 编译器升级到 Visual Studio 2008 SP1 

6845625 

反复创建/关闭远程使用方时,代理进入低内存状态 

6852207 

向远程代理发送消息时发生的 NPE 导致远程代理在读取消息包时无法处理消息 

6853822 

结束 FAILED txn 时出现模糊的异常消息 "Cannot perform operation END_TRANSACTION"(无法执行操作 END_TRANSACTION) 

6854142 

每 3 分钟就对远程代理报告一次 "Waiting for cluster connection"(等待到远程代理的群集连接)和 "Closed cluster connection"(已关闭群集连接) 

6858121 

如果存在远程 txn,关于 "imqcmd list txn" 的代理日志中会出现模糊 WARNING "Unknow transaction"(未知事务) 

6858488 

如果远程参与的代理已删除其 COMMITTED tx,则 COMMITTED txn 不会从 txn 主代理中删除 

6858905 

Consumer.destroyConsumer 中出现 ConcurrentModificationException  

6861362 

RFE: JMSBridge: 支持将目标目的地自动映射到源 Message.getJMSDestination 

6861528 

RFE: JMSBridge: 允许 MessageTransformer.transform() 将消息分支到目标中的其他目的地 

6861653 

发送过多群集 txn 信息以 COMMIT 高 txn 负载下未完成的中断远程代理 

6862413 

"mq://xxx.xxx.xx.xx:pppp/ ... is reachable within 60 seconds"(在 60 秒内可以访问 mq://xxx.xxx.xx.xx:pppp/ ...)的日志消息容易造成混淆 

6863867 

如果具有来自中断的远程代理的暂挂 COMMITTED,则 HA 代理重新启动时发生 MissingResourceException 

6867596 

如果代理再次重新启动,则代理上次重新启动后恢复的 PREPARED txn 将返回 PREPARED 状态 

6868525 

建立链接时,将临时目的地转发到远程代理会产生 NullPointerException 

6868578 

某些广播/单点传送不检查链接是否已建立,因此干扰链接握手并导致链接中断 

6871612 

HA: 如果暂挂代理中断,则使用远程消息时出现日志消息 "Cant notify transaction.completion.."(无法通知事务已完成。) 

6886391 

如果已删除消息,则确认消息时会发生 NullPointerException 

Message Queue 4.3 中修复的错误

下表介绍了 Message Queue 4.3 中修复的错误。

表 1–9 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 中修复的错误

下表介绍了 Message Queue 4.2 中修复的错误。

表 1–10 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 中修复的错误

下表介绍了 Message Queue 4.1 中修复的错误。

表 1–11 Message Queue 4.1 中修复的错误

错误 

描述 

6381703 

如果传送消息的代理重新启动,则可能会两次提交处理的远程消息。 

6388049 

无法清除未完成的分布式事务。 

6401169 

imqcmd 的提交和回滚选项不提示进行确认。 

6473052 

自动创建的队列的默认设置应该为循环传送。(MaxNumberConsumers = -1)。

6474990 

代理日志显示 imqcmd list dst 命令发生了 ConcurrentModificationException

6487413 

限制行为是 REMOVE_OLDESTREMOVE_LOWER_PRIORITY 时发生内存泄漏。

6488340 

代理自旋,并且客户端等待确认回复。 

6502744 

代理不遵循停用消息队列具有 1000 个消息的默认限制。 

6517341 

当客户端连接到增强的代理群集时,客户端运行时环境需要改进重新连接逻辑,以便允许客户端重新连接,而无论 imqReconnectEnabled 属性值是什么。

6528736 

Windows 自动启动服务 (imqbrokersvc) 在启动过程中崩溃。

6561494 

当两个使用方共享一个会话时,消息将传送到错误的使用方。 

6567439 

如果在代理重新启动后提交 PREPARED 事务中生成的消息,这些消息的传送顺序就会不正确。

Message Queue 4.0 中修复的错误

下表介绍了 Message Queue 4.0 中修复的错误。

表 1–12 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 

无法设置 TopicConnectionFactoryClientID

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 数据库的支持。