2011-09-12 216 views
3

我正在開發MQ客戶端(支持PAC 7)安裝在一臺64位Linux機器上並將消息發送到服務器的項目。Websphere MQ客戶端安裝

在客戶端機器,我們使用的是64位Linux JDK 25年6月1日

Java的版本

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)是否需要在那個目錄中?

如果有人給我回答上述問題,我會很感激,我已經投入了很多時間在這個,但沒有喜悅。

回答

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 

...不會導致env變量在當前shell中設置。該腳本必須使用點語法如下來源:

. /opt/mqm/java/bin/setjmsenv64 

採購合適的setjmsenv或setjmsenv64腳本後,你會得到什麼樣的結果?

+0

我在那裏找不到文件。 ls -l命令/opt/mqm/java/lib/libmqjbnd.so
LS:/opt/mqm/java/lib/libmqjbnd.so:沒有這樣的文件或目錄 –

+0

下面是是組件列表中有。 rpm -qa | grep的MQSeries的 MQSeriesSamples-7.0.1-6 MQSeriesClient-7.0.1-6 MQSeriesJava-7.0.1-6 MQSeriesRuntime-7.0.1-6 我不知道的是,這些部件應具備的文件或有不?? –

+0

根據評論更新我的回覆。有問題的文件用於綁定模式連接,所以我不希望在客戶端安裝中找到它。有些東西正在尋找它似乎是本地行爲的一部分,其中客戶端和綁定模式都嘗試過。我懷疑一個配置問題是什麼導致它無法識別它是一個僅客戶端安裝。 –

2

您是否需要這些庫取決於您希望如何將消息發送到服務器。 WebSphere MQ允許您在綁定模式和客戶端模式之間進行選擇。綁定模式使用帶有一些IPC的庫,而客戶端模式純粹是基於Java和TCP的。 如果你的編程語言是Java,那麼我會選擇客戶端模式。

0

當您忘記爲主機,端口設置屬性時,此消息也會發生...... 這是在使用獨立MQ客戶機的情況下。

MQEnvironment.hostname = "mqm.onZos.myCompany.com"; 
MQEnvironment.port = 1234; 
MQEnvironment.channel = "SYSTEM.MYCH.NAME";