2010-02-23 137 views
2

如何指定在我的系统属性中连接到哪个队列管理器。 下面是代码:用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"); 

方面始终得到TEST阙只是无法连接到TESTOUT队列

回答

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

对不起....我无法访问我为此做的代码,或者我会给你一些我的例子。

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本文解释了我刚刚提到的一些与通道,客户端安全性等有关的问题。