使用JMS访问MQ

时间:2010-09-09 10:58:45

标签: java java-ee jms ibm-mq

我正在使用MQ7并尝试使用JMS api访问队列。得到这个错误。 有没有人见过它?我该如何解决这个问题? TIA

  

线程“main”中的异常com.ibm.msg.client.jms.DetailedJMSException:   JMSFMQ6312:Java(tm)MQI中发生异常。 Java(tm)MQI抛出了描述问题的异常。有关详细信息,请参阅链接的异常。

     

引起:com.ibm.mq.jmqi.JmqiException:CC = 2; RC = 2495; AMQ8568:找不到本机JNI库'mqjbnd'。 [3 = mqjbnd]

     

引起:java.lang.UnsatisfiedLinkError:java.library.path中没有mqjbnd

6 个答案:

答案 0 :(得分:6)

可能有点迟了但我遇到了同样的问题,发现如果在连接到远程队列时使用不同的连接模式,可以避免这种情况。默认情况下,MQConnectionFactory使用WMQ_CM_BINDINGS作为其连接模式。如果您将其更改为WMQ_CM_CLIENT(或您喜欢的任何不需要本机库的连接模式),您应该没问题。

@Test
public void testMQConnectionMode() throws JMSException {
    MQConnectionFactory cf = new MQConnectionFactory();
    assertThat(cf.getIntProperty(CommonConstants.WMQ_CONNECTION_MODE), is(equalTo(CommonConstants.WMQ_CM_BINDINGS)));
    cf.setIntProperty(CommonConstants.WMQ_CONNECTION_MODE, CommonConstants.WMQ_CM_CLIENT);
    assertThat(cf.getIntProperty(CommonConstants.WMQ_CONNECTION_MODE), is(equalTo(CommonConstants.WMQ_CM_CLIENT)));
}

答案 1 :(得分:4)

这几乎总是由不完整的客户端安装和/或CLASSPATH问题的组合引起的。许多人抓住jar文件而不是执行完整安装,并不一定能获得所有这些文件。除了确保存在所有必需的二进制文件之外,使用安装介质还提供了一些其他功能,例如诊断和跟踪。它还确保可以应用维护。 WMQ客户端安装媒体可以SupportPac MQC7免费下载。 CLASSPATH设置应如WebSphere MQ Using Java手册中所述。

如果客户端安装是从IBM介质执行的,并且环境是按照文档设置的,那么几乎所有情况都会修复,例如您在此处报告的情况。有一些安装验证测试应用程序(其中一些诊断程序安装了我提到的完整介质)which are described here,可以帮助确定安装或代码是否存在问题。

答案 2 :(得分:3)

同意Johnam,它发生的原因是ConnectionFactory默认设置为服务器,需要设置为客户端,你说它可以在同一台机器上运行。因为我也遇到了同样的情况,它在同一台机器上运行,在这种情况下因为你的机器是WMQ服务器所以做程序,但是当你在不同的机器上运行时,你的程序必须设置为客户端。

我使用ConnectionFactory上的set some参数修复它:

<bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory">
....
<property name="transportType" value="1" />
<property name="clientReconnectTimeout" value="2" /> 
<property name="clientReconnectOptions" value="0" />
</bean>

答案 3 :(得分:1)

VM参数-Djava.library.path=/opt/mqm/java/lib64适合我。我的环境是安装了MQ的64位Suse,我的程序正在使用&#39; Bindings&#39;运输类型

答案 4 :(得分:0)

问题在于系统属性上的Path变量。尝试通过在MQInstallation Dir之前指定MQInstallation Dir:\ Lib64路径来运行代码:\ Lib

答案 5 :(得分:0)

将以下内容添加到您的tomcat参数:

-Djava.library.path="C:\Program Files (x86)\IBM\WebSphere MQ\java\lib64"

如果安装目录与上述不同,请使用适当的位置。