【发布时间】:2014-07-05 05:24:56
【问题描述】:
我编写了一个测试应用程序,用于使用 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 服务器的本地访问权限,因为我需要将它移植到第三方机器上,所以我有点盲目地让它在本地运行。
我认为如果我下载了客户端并将 jars 包含在类路径中,更改了初始上下文工厂和提供程序 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”,结果相同。
我想知道让它运行的魔法字符串,或者如果需要更根本的改变,我需要做的一个例子。谢谢。
【问题讨论】: