使用jms连接到ibm mq。指定通道和队列管理器

时间:2010-02-23 15:07:14

标签: java jms ibm-mq

如何在系统属性中指定要连接的队列管理器。 这是代码:

Properties properties = new Properties(); 
properties.setProperty("java.naming.factory.initial", "com.ibm.mq.jms.context.WMQInitialContextFactory");
properties.setProperty("java.naming.provider.url", "localhost:1414/SYSTEM.DEF.SVRCONN"); 

Context context = new InitialContext(properties); 
factory= (QueueConnectionFactory)context.lookup("TESTOUT"); 

context始终获取TEST que,但无法连接到TESTOUT队列

3 个答案:

答案 0 :(得分:2)

以下是IBM网站上有关如何设置Websphere Application Server(WAS)以使用MQ作为JMS机制的示例。
http://www.ibm.com/developerworks/websphere/techjournal/0505_woolf/0505_woolf.html

如果您是以下方面的消息制作人,IBM还有一本很好的红皮书,其中概述了如何执行此操作的示例: http://www.redbooks.ibm.com/redbooks/pdfs/sg247128.pdf

还有一些很好的Java代码示例: http://www.capitalware.biz/mq_code_java.html

抱歉....我无法访问我为此所做的代码,或者我会给你一些我的例子。

答案 1 :(得分:2)

嗯...您发布的代码段有很多问题,很难知道从哪里开始。

使用WMQInitialContectFactory似乎不是从MQ开始的地方。它增加了您在此阶段可能不需要的复杂性。我建议使用Sun的fscontext并将托管对象保存在本地文件中。您正在使用的初始上下文主要用于为许多用户或应用程序创建共享JNDI存储库,但不支持它。我的问题是程序首先必须连接到队列管理器才能获得一个连接工厂...告诉程序如何连接到QMgr!

所有那些名为SYSTEM.DEF。*或SYSTEM.AUTO。*的对象都不应该用于实际连接。它们是新对象继承的模板。如果它们可用,则无法保护它们或从它们创建的任何对象。

要么代码段不完整,要么将连接工厂与队列对象混淆。帖子说你想要TESTOUT队列,但代码只有一个队列连接工厂,没有目标或队列对象。

如果您已在本地安装了WMQ服务器或客户端,那么您已经有了很多好的示例。这些的默认位置是C:\ Program Files \ IBM \ WebSphere MQ \ tools \ _jms \ samples,它们包括pub / sub和point-to-point示例。如果您想要一个演示创建.bindings文件的示例,请在此处查看文章和示例代码:http://www.ibm.com/developerworks/websphere/techjournal/0610_woolf/0610_woolf.html本文解释了我刚刚提到的一些与渠道,客户端安全性等相关的问题。

答案 2 :(得分:0)

可以使用MQQueueManager的构造函数指定目标队列管理器的名称,使用具有连接信息属性的名称。有关属性的更多详细信息,请参阅以下链接:

http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.csqzaw.doc/jm10910_.htm