本部分包含了 Message Queue 4.0 中已知问题的列表。涵盖以下产品领域:
有关当前错误、错误的状态和解决方法的列表,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 中,可以对以下命令使用 —p 或 —password 选项以交互方式来指定密码:imqcmd、imqbrokerd 和 imdbmgr。从版本 4.0 开始,将不再使用这些选项。必须按照以下方式提供密码。
在仅用于存储密码的文件中将适当的属性设置为所需的密码值。
使用以下语法在密码文件中指定密码。
PasswordPropertyName =MyPassword
使用 —passfile 选项传递密码文件的名称。
密码文件可以包含以下列出的一个或多个密码。
用于打开 SSL 密钥库的密钥库密码。可使用 imq.keystore.password 属性指定此密码。
LDAP 系统信息库密码,用于在非匿名连接的情况下与 LDAP 目录进行安全连接。可使用 imq.user_repository.ldap.password 属性指定此密码。
用于连接到符合 JDBC 的数据库的 JDBC 数据库密码。可使用 imq.persist.jdbc.password 属性指定此密码。
imqcmd 命令(用于执行代理管理任务)的密码。可使用 imq.imqcmd.password 属性指定此密码。
在以下示例中,将 JDBC 数据库的密码设置为 abracadabra。
imq.persist.jdbc.password=abracadabra
可以将代理配置为使用密码文件,该文件可通过以下任一方法创建。
在代理的 config.properties 文件中设置以下属性。
|
imq.passfile.enabled=true |
|
imq.passfile.dirpath=MyFileDirectory |
|
imq.passfile.name=MyPassfileName |
使用 imqbrokerd 命令的 —passfile 选项。
imqbrokerd —passfile MyPassfileName
本部分包含 Message Queue 4.0 中的一般问题。其中某些问题是以前的 Message Queue 版本引入的。
以下问题对于 Message Queue 4.0 产品的两个版本都适用。
SOAP 客户端。以前,用于引用 mail.jar 和 mail.jar 的 SAAJ 1.2 实现 jar 无需位于 CLASSPATH 中。在 SAAJ 1.3 中删除了此引用,因此 Message Queue 客户端必须将 mail.jar 明确放入 CLASSPATH 中。
在 Message Queue 4.0 中,在 config.properties 文件的注释部分给出了将 LDAP 服务器用作用户系统信息库的示例代理配置,而 default.properties 文件中的 LDAP 用户系统信息库示例已被注释掉。
如果您以前使用示例 LDAP 用户系统信息库属性(在 default.properties 文件中指定)中的任何属性值,则当您的 JMS 应用程序客户端尝试创建 JMS 连接时,将会收到安全异常。升级到 Message Queue 4.0 之后将会发生这种情况。
当 JMS 客户端尝试连接到 Message Queue 4.0 代理时,代理日志中会记录一个错误,且 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 2005Q4 管理指南》第 8 章中的说明来设置代理属性 imq.user_repository.ldap.uidattr。
以下是有关使用 JMX API 的问题。
在 Windows 平台上,事务管理器监视 MBean 的 getTransactionInfo 方法将返回具有错误事务创建时间的事务信息(错误号 6393359)。
解决方法 请改用事务管理器监视 MBean 的 getTransactionInfoByID 方法。
将目标监视 MBean 的 getActiveConsumerIDs 方法用于主题目标时抛出异常(错误号 6397184)。
解决方法 请改用目标监视 MBean 的 getConsumerIDs 方法。
以下是有关管理和配置 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 代理。
当使用 Ctrl-C 关闭代理时,事务可能会在存储库关闭后被清除(错误号 4934446)。
如果在处理消息或事务时关闭代理,代理可能会显示错误消息,原因是“存储库关闭后访问存储方法”。
解决方法 可以忽略此错误消息;代理会正确处理,并将任何错误通知使用方。 此错误不影响系统的可靠性。
如果持久性存储库打开过多目标,将无法访问代理。(错误号 4953354)。
解决方法 这种情况是由于代理达到了系统打开文件描述符限制所致。在 Solaris 和 Linux 上可使用 ulimit 命令来增加文件描述符限制。
目标被销毁后,使用方将被孤立(错误号 5060787)。
目标被销毁后,活动的使用方将被孤立。使用方孤立后,他们将不再接收消息(即使重新创建了目标)。
解决方法 此问题没有解决方法。
无法使用 JMSMessageID 选择消息(错误号 6196233)。
解决方法 更改选择器,将以下表达式:
JMSMessageID = "ID:message-id-string"
更改为以下表达式:
JMSMessageID IN (’ID:message-id-string’, ’message-id-string’)
Message Queue 队列浏览器显示未提交的消息(错误号 6264003)。
浏览队列内容时,已在事务中生成但尚未提交的消息可能会显示在队列浏览器枚举中。
解决方法 此问题没有解决方法。
群集中某个代理的连接丢失(错误号 6377527)。
产生此错误的一个原因是,丢失连接的代理的地址被解析为回送 IP 地址 (127.0.0.1)。
解决方法 请确保不要将代理地址解析为回送 IP 地址。