IBM Support

AMQ8568 RC=2495 mqjbnd が見つかりません、または AMQ8351 WebSphere MQ Java 環境が正しく構成されていません

Troubleshooting


Problem

WebSphere MQ V7 64bit版において、"dspmqver -p 4" または "dspmqver -p 7" を発行すると以下のエラーが発生します。 ... Name: IBM WebSphere MQ Version: 7.0.1.0 CMVC Level: k000-L090724 mqjbnd=CC=2;RC=2495;AMQ8568: ネイティブ JNI ライブラリー 'mqjbnd' が見つかりませんでした。 [3=mqjbnd]::/opt/mqm/java/lib/libmqjbnd.so: /opt/mqm/java/lib/libmqjbnd.so: 共有オブジェクトファイルを開けません: ファイルまたはディレクトリーが見つかりません Build Type: Production ... エラーに表示されたファイルについて以下のように "ls" コマンドを発行しますが、ファイルは存在し適切な所有者とパーミッションも設定されています。 $ ls -l /opt/mqm/java/lib/libmqjbnd.so -r-xr-xr-x 1 mqm mqm 326943 2009-08-13 12:01 /opt/mqm/java/lib/libmqjbnd.so または、以下のエラーが発生します。 AMQ8351: WebSphere MQ Java 環境が正しく構成されていません。

Cause

以下のMQ V7 InfocenterのWebページは、MQ classes for Java™ and MQ classes for JMSアプリケーション(例:dspmqver)を実行するために必要な環境変数を説明しています。

WebSphere MQ classes for Java に関連した環境変数

上位のAMQ8568エラーのケースでは、問題は64-bitプラットフォームで使用するとき64-bitライブラリが指定されておらず、MQスクリプト "setjmsenv"が手動またはログインプロファイルで呼び出されて以下の環境変数をセットしていることです。(32-bit ライブラリを指定しています。)

$ echo $MQ_JAVA_LIB_PATH
/opt/mqm/java/lib

Resolving The Problem

【MQ 7.1 または 7.5を使用するときの注意】

MQ 7.1 または 7.5を使用するとき、JavaやJMS使用時も含めて適切なMQ環境変数をセットアップするためには、 "setjmsenv" や "setjmsenv64"ではなく、"setmqenv" を発行する必要があります。

【MQ 7.0を使用するときの4つのステップ】

ステップ 1: 64-bitプラットフォームで使用するとき、"setjmsenv" ではなく "setjmsenv64"を発行する必要があります。

注: MQ classes for Java または MQ classes for JMS を使用するときのみ

上記コマンドの出力例は以下のとおりです。

$ . setjmsenv64


MQ_JAVA_INSTALL_PATH is /opt/mqm/java
MQ_JAVA_DATA_PATH is /var/mqm
MQ_JAVA_LIB_PATH is /opt/mqm/java/lib64
CLASSPATH is :/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

<補足情報>

64-bit ライブラリが指定されたことを確認する方法
$ echo $MQ_JAVA_LIB_PATH
/opt/mqm/java/lib64

"dspmqver -p 4" コマンドがエラーなく実行できることを確認します。
...
Name: IBM WebSphere MQ
Version: 7.0.1.0
CMVC Level: k000-L090724 mqjbnd=k000-L090724
Build Type: Production

setjmsenvやsetjmsenv64を実行するための正しい構文の説明

"setjmsenv"や"setjmsenv64"を実行するときは以下のようにドットとスペースが必要です。

. setjmsenv

. setjmsenv64

ドットとスペースは、環境変数がスクリプトによりセットされ、同じコマンドプロンプトで他のアプリケーションが実行中のカレントプロセス空間において利用可能になるために必要です。


$ setjmsenv64
MQ_JAVA_INSTALL_PATH is /opt/mqm/java
MQ_JAVA_DATA_PATH is /var/mqm
MQ_JAVA_LIB_PATH is /opt/mqm/java/lib64
CLASSPATH is :/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

環境変数がセットされていないことを確認する方法
$ echo $MQ_JAVA_LIB_PATH
< 値なし >

カレントプロセス空間にsetjmsenv64やsetjmsenvによって必要なMQ環境変数がセットされていないために、AMQ8351が表示されてしまうことが確認できます。

$ dspmqver -p 4
AMQ8351: WebSphere MQ Java 環境が正しく構成されていません。

ステップ 2: 不適切なシンボリックリンクを削除します。(プラットフォームがAIXの場合のみ)

デフォルトではシンボリック・リンクが/usr/libから32-bit MQ ライブラリに貼られていません。2495エラーの原因として、/usr/libから32-bit MQ ライブラリにシンボリックリンクが貼られており、正しい64-bit ライブラリをロードすることを妨げていることが考えられます。その解決策は、"dltmqlnk"でそれらのシンボリックリンクを削除することです。

dltmklnkについては以下をご参照ください。

Implications of a 64-bit queue manager(英語)

シンボリックリンクが存在するかどうか以下の方法で確認することができます。

% ls -l /usr/lib/*mq*
ls: 0653-341 ファイル /usr/lib/*mq* が存在しません。

ステップ 3: ランタイムにJava 64-bitを指定します。
2495エラーの一般的な原因として、64-bitマシンでJava 32-bitコードが実行されていることがあります。そのため、64-bitコードを指定するために以下の例のようにPATHをセットすることが重要です。

export JAVA_HOME=/usr/java5_64
export JAVA_BINDIR=$JAVA_HOME/bin
export PATH=$JAVA_BINDIR:$PATH

以下のコマンドでどの"java"がランタイムで実行されているかチェックすることができます。以下は64-bitバージョンであることを示しています。

% which java
/usr/java5_64/bin/java

% java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64dev-20070511(SR5))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423-20070426 (JIT enabled)

ステップ 4: -Djava.library.pathを正しい64-bit Javaライブラリで指定する必要があります。2495エラーは64ビットのMQ Javaプログラムを実行するのに32-bitライブラリを使用した際にも起こるためです。

(誤)
AIX: java -Djava.library.path=/usr/mqm/java/lib applicationName
AIX以外のUnix: java -Djava.library.path=/opt/mqm/java/lib applicationName

(正)
AIX: java -Djava.library.path=/usr/mqm/java/lib64 applicationName
AIX以外のUnix: java -Djava.library.path=/opt/mqm/java/lib64 applicationName

【MQをJMSプロバイダーとして使用するWebSphere Application Serverの場合】

MQをJMSプロバイダーとして使用するWebSphere Application Serverで "mqjbnd (java.library.path に見つかりません)"のexceptionを目にした場合は、以下の技術文書をご参照ください。

UnsatisfiedLinkError: mqjbnd (Not found in java.library.path), CC=2;RC=2495;AMQ8568: The native JNI library 'mqjbnd' was not found. [3=mqjbnd] (英語)



参考

この文書は、米国 IBM 社の資料を翻訳した参考文書です。翻訳元の文書は、以下のリンクよりご参照ください。
AMQ8568 RC=2495 mqjbnd was not found, or AMQ8351 Java environment has not been configured correctly

FFDC等、 WebSphere MQ で問題が発生した場合に収集するべき資料は、以下のリンク先よりご確認いただけます。
MustGather : WebSphere MQで問題が発生した際の収集資料

【お問合せ先】
技術的な内容に関して、サービス契約のあるお客様はIBMサービス・ラインにお問い合わせください。
IBMサービス・ライン

[{"Product":{"code":"SSFKSJ","label":"WebSphere MQ"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Configuration","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"8.0;7.5;7.1;7.0.1;7.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Product Synonym

WMQ MQ MQSeries

Document Information

Modified date:
15 June 2018

UID

swg21666967