来自WAS 8的Spring JMS客户端访问WMQ会抛出DetailedInvalidDestinationException

时间:2012-06-17 15:09:55

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

我在Websphere AS 8.0(主机A)中部署了一个Web应用程序,使用spring-jms客户端访问远程机器(主机B)中WMQ 7.0中的队列。我已根据WAS 8管理指南中的说明,使用资源链接下的JMS提供程序在JNDI中配置WMQ ConnectionFactory和WMQ Queues,WMQ作为消息提供程序。我还使用Test Connection按钮测试了它。它工作正常。我已根据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中配置了resource-ref。

我已经尝试了以上所有并且失败了。所以我删除了上面提到的配置。

任何人都可以通过指出我为什么会收到此异常,我缺少的内容或详细说明避免此异常的步骤来帮助我吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

虽然您已在JNDI中定义了连接工厂和目标,但您必须定义MQ对应项。例如,必须创建名为QM_MGR的MQ队列管理器以及SVRCONN通道和在端口上运行的侦听器,例如1414.还必须在该队列管理器上创建名为Q1的队列。

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

答案 1 :(得分:0)

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