【问题标题】:Spring JMS client from WAS 8 accessing WMQ throws DetailedInvalidDestinationException来自 WAS 8 的 Spring JMS 客户端访问 WMQ 抛出DetailedInvalidDestinationException
【发布时间】:2012-06-17 15:09:55
【问题描述】:

我有一个 Web 应用程序部署在 Websphere AS 8.0(主机 A)中,使用 spring-jms 客户端访问远程机器(主机 B)中 WMQ 7.0 中的队列。我已经按照 WAS 8 管理指南中的说明,使用资源链接下的 JMS Provider 在 JNDI 中配置了 WMQ ConnectionFactory 和 WMQ 队列,并将 WMQ 作为消息传递提供者。我还使用测试连接按钮对其进行了测试。它工作正常。我已经按照 Spring JMS 配置配置了 JNDI 模板和 QueueConnectionFactory 和 Queue(Destination)、DestinationResolver 和 JMSTemplate。

但是,当我尝试运行我的服务器并通过 JNDI 访问 WMQ 时,它会引发以下异常:

exception message JMSCC0085: A destination was not specified.; nested exception is **com.ibm.msg.client.jms.DetailedInvalidDestinationException**: JMSCC0085: A destination was not specified. with params [B@775e20e, 1c02f7440b8438e5]
org.springframework.jms.InvalidDestinationException:JMSCC0085:**A destination was not specified**.; nested exception is com.ibm.msg.client.jms.DetailedInvalidDestinationException:**JMSCC0085:A destination was not specified.**
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:534)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:526)

我尝试打印我的默认目标名称,它打印为 queue://QM_MGR/Q1,其中 QM_MGR 是队列管理器的名称,Q1 是 WMQ 中的队列名称。

请注意,我没有在 WMQ 中配置任何 JNDI,没有在 JNDI 模板中配置任何 InitialContextFactory 和 Provider URL,在 web.xml 中没有配置资源引用。

我已经尝试了以上所有方法,但都失败了。所以我已经删除了上面提到的配置。

谁能帮助我指出为什么我会收到此异常,我缺少什么或详细说明避免此异常的步骤?提前致谢。

【问题讨论】:

  • 请帮助我,因为过去 4 天我一直在头疼。

标签: jndi ibm-mq spring-jms websphere-8


【解决方案1】:

虽然您已经在 J​​NDI 中定义了连接工厂和目的地,但您必须定义 MQ 对应项。例如,一个名为 QM_MGR 的 MQ 队列管理器必须与一个 SVRCONN 通道和一个在端口(比如 1414)上运行的侦听器一起创建。此外,必须在该队列管理器上创建一个名为 Q1 的队列。

请检查您是否已完成上述操作。

【讨论】:

  • 感谢您的回复。我创建了以下 MQ 计数器部件:队列管理器:QM_MGR,队列:Q1 和 Q2,通道:SYSTEM.AAA.CONFIG,端口:1416。还有什么我错过的吗?
  • 就是这样。您可以使用 MQ 示例 amqsputc 对其进行测试,以检查配置是否正确。 1) 在命令提示符下(假设 Windows 操作系统)使用 SET MQSERVER=SYSTEM.AAA.CONFIG/TCP/(1416) 设置 MQSERVER 环境变量 (2) 然后运行命令 amqsputc Q1 QM_MGR。这将允许您将消息发送到队列 Q1。
  • 感谢您的快速回复。我的 WAS 和 WMQ 都在不同的机器上。如何从 WMQ 所在的另一台机器上测试上述内容?我的机器中是否需要任何 jars 来运行命令?提前致谢。
  • Amqsputc 是一个 C 应用程序。在您的 WAS 机器中,打开命令提示符并运行步骤 1 和 2。
  • 从本地机器甚至远程机器上的客户端应用程序访问时,它工作正常。但是当我使用使用 Spring JMS 配置的 JNDI 时,它会抛出异常 org.springframework.jms.InvalidDestinationException:JMSCC0085:**A destination was not specified**.;嵌套异常是 com.ibm.msg.client.jms.DetailedInvalidDestinationException:**JMSCC0085:未指定目的地。**。你能帮我解决这个问题吗?
【解决方案2】:

我已经解决了这个问题。导致错误的是 JNDI 命名空间。谢谢大家。

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 2015-03-13
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多