我正在开发一个项目,其中MQ客户端(支持PAC 7)安装在一台64位Linux计算机上,并将消息发送到服务器。
在客户端计算机上,我们使用的是64位Linux JDK 1.6.25
java -version
java version "1.6.0_25"
我有以下环境变量设置
MQSERVER='my_channel/tcp/SRVD10995(1414)'
MQ_INSTALL_ROOT=/var/mqm/
MQ_JAVA_DATA_PATH=/var/mqm/
MQ_JAVA_INSTALL_PATH=/opt/mqm/java/
MQ_JAVA_LIB_PATH=/opt/mqm/java/lib64
LD_LIBRARY_PATH=/opt/mqm/java/lib64
CLASSPATH= /opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
但是当我运行以下命令时
dspmqver -p 6
对于本机库,我看到以下消息:
Name: IBM WebSphere MQ
Version: 7.0.1.6
CMVC Level: k701-106-110721 mqjbnd=CC=2;RC=2495;AMQ8568: The native JNI library 'mqjbnd' was not found. [3=mqjbnd]::no mqjbnd in java.library.path
Build Type: Production
当我执行JMS代码连接到服务器时,我也收到相同的错误消息。我没有libmqjbnd.so不在/ opt / mqm / java / lib64文件夹中,甚至不在32位文件夹中。
我有几个问题:
1)如何解决客户端安装此问题? 2)库文件(.so)是否需要在该目录中?
如果有人向我提供上述问题的答案,我将感激不尽,我已经投入了很多时间,但没有快乐。
答案 0 :(得分:2)
在这个具体问题here上有一个技术说明。如果在那里提供的解决方案无法解决您的问题,请告诉我们。
更新:我注意到你的CLASSPATH指向32位库和指向64位库的其他变量之间不匹配。 WMQ提供了为您as described in the Infocenter设置变量的脚本:
On a UNIX system, you can use the script setjmsenv (if you are using a 32-bit
JVM) or setjmsenv64 (if you are using a 64-bit JVM) to set the environment
variables. On AIX, these scripts are in the /usr/mqm/java/bin directory and,
on HP-UX, Linux, and Solaris, they are in the /opt/mqm/java/bin directory.
许多人在他们的.profile中提供脚本。你试过这些吗?请记住,只需运行脚本......
/opt/mqm/java/bin/setjmsenv64
...不会导致在当前shell中设置env变量。必须使用点语法来源脚本,如下所示:
. /opt/mqm/java/bin/setjmsenv64
在获取适当的setjmsenv或setjmsenv64脚本后会得到什么结果?
答案 1 :(得分:2)
是否需要库取决于您希望如何向服务器发送消息。 WebSphere MQ允许您在绑定模式和客户端模式之间进行选择。绑定模式使用带有某些IPC的库,而客户端模式纯粹基于Java和TCP。 如果您的编程语言是Java,那么我会选择客户端模式。
答案 2 :(得分:0)
当您忘记设置主机,端口,...的属性时,也会出现此消息。 这是在独立MQ客户端的情况下。
MQEnvironment.hostname = "mqm.onZos.myCompany.com";
MQEnvironment.port = 1234;
MQEnvironment.channel = "SYSTEM.MYCH.NAME";