本部分包含了 Message Queue 3.7 UR1 中已知问题的列表。涵盖以下产品领域:
有关当前错误、错误的状态和解决方法的列表,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 发送电子邮件。
使用 SSL 的连接服务当前仅支持自签名服务器证书,即信任主机模式。
使用 HTTP 传输的 JMS 客户端突然终止时(例如,使用 Ctrl-C),代理要花费大约一分钟的时间才能释放客户端连接和所有关联的资源。
如果在这一分钟内客户端的另一个实例启动,并且该实例尝试使用同一个客户端 ID、长期订阅或队列,则可能会收到“客户端 ID 已经在使用”的异常。这实际上不是什么问题,只是上述终止过程的副作用。如果客户端在延迟约一分钟后启动,则应当一切正常。
在 Message Queue 3.7 UR1 中,在 config.properties 文件的注释部分给出了将 LDAP 服务器用作用户系统信息库的示例代理配置,而 default.properties 文件中的 LDAP 用户系统信息库示例已被注释掉。
如果您以前使用示例 LDAP 用户系统信息库属性(在 default.properties 文件中指定)中的任何属性值,则当您的 JMS 应用程序客户端尝试创建 JMS 连接时,将会收到安全异常。升级到 Message Queue 3.7 UR1 之后将会发生这种情况。
当 JMS 客户端尝试连接到 Message Queue 3.7 UR1 代理时,代理日志中会记录一个错误,且 JMS 客户端会收到以下异常:
SecurityException. 20/Aug/2004:11:16:41 PDT] ERROR [B4064]: Ldap repository ldap property .uidattr not defined for authentication type basic:com.sun.messaging.jmq.auth.LoginException: [B4064]: Ldap repository ldap property .uidattr not defined for authentication type basic
解决方法 请按照《Sun Java System Message Queue 3.7 UR1 管理指南》中的第 7 章 “Managing Security”中的说明来设置代理属性 imq.user_repository.ldap.uidattr。
以下各项内容与代理群集的使用相关。
本发行版中只支持完全连接的代理群集。这意味着群集中的每个代理均必须与群集中的其他所有代理直接通信。如果使用 imqbrokerd -cluster 命令行变量连接代理,请务必小心以确保包含了群集中的所有代理。
与作为群集一部分的代理连接的客户端目前不能使用 QueueBrowser 来浏览位于该集群中远程代理上的队列。此客户端只能浏览位于直接连接的代理上的队列的内容。此客户端仍可以向任何队列发送消息,或使用来自集群中任何代理上的任何队列的消息,此限制只影响浏览。
如果代理群集中未使用主代理,则要添加到群集中的代理所存储的持久性信息将不会传播到群集中的其他代理。
群集中某个代理的连接丢失(错误号 6377527)。
产生此错误的一个原因是,丢失连接的代理的地址被解析为回送 IP 地址 (127.0.0.1)。
解决方法 请确保不要将代理地址解析为回送 IP 地址。
在代理群集中,代理会将要传送到尚未启动的远程连接的消息排队(错误号 4951010)。
解决方法 一旦启动远程连接,这些消息将会由使用方接收。如果该使用方的连接关闭,这些消息将重新传送给另一个使用方。
以下是有关管理和配置 Message Queue 的问题。
在 Windows 计算机上,当 CLASSPATH 包含双引号时,imqadmin 和 imqobjmgr 实用程序将抛出错误(错误号 5060769)
解决方法 可以忽略此错误消息;代理只是正确地通知使用方出现的任何错误。此错误不影响系统的可靠性。
如果所提供的值中包含空格,则所有 Solaris 和 Windows 脚本中的 -javahome 选项都不起作用(错误号 4683029)。
Message Queue 命令和实用程序使用 javahome 选项来指定要使用的备用 Java 2 兼容运行时。但是,备用 Java 运行时的路径名不能包含空格。以下是包含空格的路径示例。
Windows:C:/jdk 1.4
Solaris: /work/java 1.4
解决方法 请在不包含空格的位置或路径中安装 Java 运行时。
imqQueueBrowserMaxMessagesPerRetrieve 属性指定客户端运行时环境在浏览队列目的地的内容时一次可以检索到的最大消息数。请注意,客户端应用程序始终可以获取队列上的所有消息。因此,imqQueueBrowserMaxMessagesPerRetrieve 属性会影响如何对排队的消息进行分块,以便传送到客户端运行时环境(消息较少时用较大的块,或消息较多时用较小的块),但不会影响所浏览的全部消息。更改此属性的值可能会对性能产生影响,但不会导致客户端应用程序获取的数据增加或减少(错误号 6387631)。
以下问题将影响 Message Queue 代理。
imqbrokerd —license 命令显示过时或重复的信息。它显示有关试用许可证的信息,即使此类型的许可证不再受到支持(错误号 6489711);还将显示有关 unl 许可证的重复信息(错误号 6441015)。
解决方法 这些是小问题,无需解决方法。
代理不使用停用消息队列的默认限制(1000 条消息);它会一直向停用消息队列中添加消息,直到代理消耗完内存为止。(错误号 6502744)
解决方案 将停用消息队列限制重置为 1001 或除 1000 以外的任何值。
在 Windows 2000 中,HTTPS createQueueConnection 偶尔引发异常(错误号 4953348)。
解决方法 重试连接。
当使用 Ctrl-C 关闭代理时,事务可能会在存储库关闭后被清除(错误号 4934446)。
如果在处理消息或事务时关闭代理,代理可能会显示错误消息,原因是“存储库关闭后访问存储方法”。
解决方法 可以忽略此错误消息;代理只是正确地通知使用方出现的任何错误。此错误不影响系统的可靠性。
如果持久性存储库打开的目的地过多,代理将变为不可访问(错误号 4953354)。
解决方法 这种情况是由于代理达到了系统打开文件描述符限制所致。在 Solaris 和 Linux 上可使用 ulimit 命令来增加文件描述符限制。
目的地销毁后,使用方会被孤立(错误号 5060787)
目的地销毁后,活动的使用方将被孤立。使用方一旦孤立,他们将再也收不到消息(即使重新创建了目的地也是如此)。
解决方法 此问题没有解决方法。
无法使用 JMSMessageID 选择消息(错误号 6196233)。
解决方法 更改选择器,将以下表达式
JMSMessageID = "ID:message-id-string"
更改为以下表达式
JMSMessageID IN (’ID:message-id-string’, ’message-id-string’)
队列浏览器显示未提交的消息(错误号 6264003)。
浏览队列内容时,已在事务中生成但尚未提交的消息可能会显示在队列浏览器枚举中。
解决方法 此问题没有解决方法。
在提交过程中,如果代理发生故障,消息可能变为不可用(错误号 6467874)。
在极少情况下,代理发生故障时事务中的消息可能无法传送到使用方。特别是,在提交处理过程中出现的一个小窗口,可能导致消息在持久性存储库中受阻。如果发生此情况,则在故障之后启动代理时会显示以下消息。
[06/Sep/2006:10:11:11 PDT] ERROR [B2085]: Loading Destination q0 [Queue] failed. Messages stored on that destination will not be available.: > com.sun.messaging.jmq.jmsserver.util.BrokerException: The message 8-129.145.180.87(b8:8b:26:15:41:26)-38998-1157562551217 has an associated acknowledgement list already.
解决方法 此问题没有解决方法。
没有适用于 Message Queue 3.7 UR1 Beta 版的独立产品。因此,对于此发行版,必须使用 Java Enterprise System 安装程序安装 Message Queue,并参阅 Sun Java System 安装指南以获取相关说明。