独立Java JMS应用程序未连接到WebSphere MQ

时间:2014-05-16 16:54:31

标签: java jms ibm-mq

我有一个测试应用程序,我使用JMS在Apache ActiveMQ上发送和接收消息。它只是一个测试应用程序,因此我将初始上下文工厂和提供程序URL硬编码到Properties对象中,然后将其放入初始上下文中:

Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL, providerUrl);
InitialContext jndiContext = new InitialContext(properties);

它有效。

完成后,我现在需要将其转换为使用WebSphere MQ。我没有对WebSphere MQ服务器的本地访问权限,因为我需要将它移植到第三方机器上,所以我有点盲目地让它在本地运行。

我认为如果我下载了客户端并将jar包含在类路径中,更改了初始上下文工厂和提供者url值,则应用程序将运行,但不会连接:

Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL, providerUrl);
InitialContext jndiContext = new InitialContext(properties);

但事实并非如此。我得到一个命名例外:

  

“无法实例化类:com.ibm.websphere.naming.WsnInitialContextFactory”

我也试过“com.ibm.mq.jms.context.WMQInitialContextFactory”,结果相同。

我想知道要运行它的神奇字符串,或者如果需要更多根本性的更改,我需要做的一个例子。感谢。

1 个答案:

答案 0 :(得分:0)

为什么在真正需要MQ Server时下载MQ Client?卸载它,去下载WebSphere MQ Advanced:https://www.ibm.com/developerworks/community/blogs/messaging/entry/develop_on_websphere_mq_advanced_at_no_charge?lang=en

不要尝试将Apache MQ代码与WebSphere MQ一起使用。

其次,网上有数百个JMS / MQ样本。这是一个列表:http://www.capitalware.com/mq_code_java.html#jmscode