2016-05-26 20 views
0

私は、IBM MQ 8.0.0.4で奇妙な問題に直面しています。私のコマンドラインアプリケーション(Java 8)は、Windows環境からLinuxサーバにインストールされたMQサーバに接続します。アプリケーションは、到着した特定のキューからメッセージを読み取ります。IBM MQ Server 8.0.0.4クライアントライブラリ

com.ibm.mq.allclient.jar 
com.ibm.mq.traceControl.jar 
fscontext.jar 
jms.jar 
JSON4J.jar 
providerutil.jar 

アプリケーション何の問題もなくいつものように動作します - :私はクライアントライブラリ(8.0.0.4-WS-MQ-インストール-のJava-all.jarを)として、次のjarファイルを使用します。 "control + c"で停止できます。これが完了すると、ThreadGroup.interrupt()が呼び出され、アプリケーションは期待どおりに停止します。 何が期待されていないことである: -

1)次のスタックトレース

[2016-05-26 14:13:14,023]-[DEBUG]-[  Thread-7]-[com.xyz.app.inf.DecoratorBase.invoke(){106}]-not overridden 
[2016-05-26 14:13:14,316]-[ERROR]-[  Thread-7]-[com.xyz.app.inf.console.launcher.ServiceRunnerBase.serviceInternal(){230}]-Unhanled exception 
com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destination 'QNAME'. 
WebSphere MQ classes for JMS attempted to perform an MQGET; however WebSphere MQ reported an error. 
Use the linked exception to determine the cause of this error. 
    at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595) 
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215) 
    at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:213) 
    at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:261) 
    at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1835) 
    at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:231) 
    at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:1471) 
    at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive(WMQMessageConsumer.java:659) 
    at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:1036) 
    at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(JmsMessageConsumerImpl.java:671) 
    at com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:209) 
    at com.xyz.app.inf.XQueueReceiver.receive(XQueueReceiver.java:141) 
    at com.xyz.app.inf.XQueueReceiver.receive(XQueueReceiver.java:100) 
    at com.xyz.app.cli.services.impl.MessageRunner.read(MessageRunner.java:440) 
    at com.xyz.app.cli.services.impl.MessageRunner.task(MessageRunner.java:201) 
    at com.xyz.app.inf.console.launcher.ServiceRunnerBase.serviceInternal(ServiceRunnerBase.java:227) 
    at com.xyz.app.inf.console.launcher.ServiceRunnerBase.run(ServiceRunnerBase.java:127) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2195' ('MQRC_UNEXPECTED_ERROR'). 
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203) 
    ... 16 more 
Caused by: com.ibm.mq.jmqi.local.LocalMQ$4: CC=2;RC=2495;AMQ8598: Failed to load the WebSphere MQ native JNI library: 'mqjbnd'. 
    at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1268) 
    at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:309) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.ibm.mq.jmqi.local.LocalMQ.initialise_inner(LocalMQ.java:259) 
    at com.ibm.mq.jmqi.local.LocalMQ.initialise(LocalMQ.java:221) 
    at com.ibm.mq.jmqi.local.LocalMQ.<init>(LocalMQ.java:1350) 
    at com.ibm.mq.jmqi.local.LocalServer.<init>(LocalServer.java:230) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.ibm.mq.jmqi.JmqiEnvironment.getInstance(JmqiEnvironment.java:706) 
    at com.ibm.mq.jmqi.JmqiEnvironment.getMQI(JmqiEnvironment.java:640) 
    at com.ibm.msg.client.wmq.factories.WMQComponent.getImplementationInfo(WMQComponent.java:251) 
    at com.ibm.msg.client.commonservices.trace.Trace.getVersion(Trace.java:2092) 
    at com.ibm.msg.client.commonservices.trace.Trace.createFFSTString(Trace.java:2050) 
    at com.ibm.msg.client.commonservices.trace.Trace.ffstInternal(Trace.java:1935) 
    at com.ibm.msg.client.commonservices.trace.Trace.ffst(Trace.java:1736) 
    at com.ibm.mq.jmqi.remote.impl.RemoteProxyQueue.proxyMQGET(RemoteProxyQueue.java:2540) 
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiGetInternalWithRecon(RemoteFAP.java:7169) 
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiGetInternal(RemoteFAP.java:7054) 
    at com.ibm.mq.jmqi.internal.JmqiTools.getMessage(JmqiTools.java:1217) 
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiGet(RemoteFAP.java:7001) 
    at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiGet(InterceptedJmqiImpl.java:1325) 
    at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiGet(ESEJMQI.java:600) 
    at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1775) 
    ... 13 more 
Caused by: java.lang.UnsatisfiedLinkError: no mqjbnd in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:870) 
    at java.lang.System.loadLibrary(System.java:1122) 
    at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1240) 
    ... 38 more 
[2016-05-26 14:13:14,326]-[INFO ]-[  Thread-5]-[com.xyz.app.startup.Application.destroy(){433}]-Application shutting down 
[2016-05-26 14:13:14,326]-[INFO ]-[  Thread-5]-[com.xyz.app.startup.Application.cleanup(){608}]-Application.cleanup() called------ 

2)などJMSCC0001.FDCという名前のファイルが含まれていFFDCが作成されるという名前のフォルダ、JMSCC0002.FDC

スタックトレースが予期せぬことを言っているのは、アプリケーション「 」がバインディングモードでMQサーバーに接続していることを意味する「java.library.pathのmqjbndがありません」ということです。

com.ibm.mq.jms.MQQueueCon[email protected] :- 
| | XMSC_ADMIN_OBJECT_TYPE    :- 17 
| | XMSC_ASYNC_EXCEPTIONS    :- 1 
| | XMSC_CLIENT_ID      :- <null> 
| | XMSC_CONNECTION_TYPE    :- 1 
| | XMSC_CONNECTION_TYPE_NAME   :- com.ibm.msg.client.wmq 
| | XMSC_RTT_DIRECT_AUTH    :- 0 
| | XMSC_RTT_PROXY_HOSTNAME   :- <null> 
| | XMSC_RTT_PROXY_PORT    :- 443 
| | XMSC_WMQ_BROKER_CC_SUBQ   :- SYSTEM.JMS.ND.CC.SUBSCRIBER.QUEUE 
| | XMSC_WMQ_BROKER_CONTROLQ   :- SYSTEM.BROKER.CONTROL.QUEUE 
| | XMSC_WMQ_BROKER_PUBQ    :- SYSTEM.BROKER.DEFAULT.STREAM 
| | XMSC_WMQ_BROKER_QMGR    :- 
| | XMSC_WMQ_BROKER_SUBQ    :- SYSTEM.JMS.ND.SUBSCRIBER.QUEUE 
| | XMSC_WMQ_CCDTURL     :- <null> 
| | XMSC_WMQ_CF_DESCRIPTION   :- <null> 
| | XMSC_WMQ_CHANNEL     :- NSICHL 
| | XMSC_WMQ_CLEANUP_INTERVAL   :- 3600000 
| | XMSC_WMQ_CLEANUP_LEVEL    :- 1 
| | XMSC_WMQ_CLIENT_RECONNECT_OPTIONS :- 0 
| | XMSC_WMQ_CLIENT_RECONNECT_TIMEOUT :- 1800 
| | XMSC_WMQ_CLONE_SUPPORT    :- 0 
| | XMSC_WMQ_CONNECTION_MODE   :- 1 
| | XMSC_WMQ_CONNECTION_NAME_LIST_INT :- 
| | | 0 :- 172.16.31.29(1414) 
| | XMSC_WMQ_CONNECTION_TAG   :- [[email protected] 
| | XMSC_WMQ_CONNECT_OPTIONS   :- 0 
| | XMSC_WMQ_HEADER_COMP    :- 
| | | 0 :- 0 
| | XMSC_WMQ_LOCAL_ADDRESS    :- 
| | XMSC_WMQ_MAP_NAME_STYLE   :- true 
| | XMSC_WMQ_MAX_BUFFER_SIZE   :- 1000 
| | XMSC_WMQ_MESSAGE_RETENTION   :- 1 
| | XMSC_WMQ_MESSAGE_SELECTION   :- 0 
| | XMSC_WMQ_MSG_BATCH_SIZE   :- 10 
| | XMSC_WMQ_MSG_COMP     :- 
| | | 0 :- 0 
| | XMSC_WMQ_OPT_PUB     :- false 
| | XMSC_WMQ_OUTCOME_NOTIFICATION  :- true 
| | XMSC_WMQ_POLLING_INTERVAL   :- 5000 
| | XMSC_WMQ_PROCESS_DURATION   :- 0 
| | XMSC_WMQ_PROVIDER_VERSION   :- unspecified 
| | XMSC_WMQ_PUB_ACK_INTERVAL   :- 25 
| | XMSC_WMQ_QMGR_CCSID    :- 819 
| | XMSC_WMQ_QUEUE_MANAGER    :- NSI 
| | XMSC_WMQ_RECEIVE_EXIT    :- <null> 
| | XMSC_WMQ_RECEIVE_EXIT_INIT   :- <null> 
| | XMSC_WMQ_RECEIVE_ISOLATION   :- 0 
| | XMSC_WMQ_RESCAN_INTERVAL   :- 5000 
| | XMSC_WMQ_SECURITY_EXIT    :- <null> 
| | XMSC_WMQ_SECURITY_EXIT_INIT  :- <null> 
| | XMSC_WMQ_SEND_CHECK_COUNT   :- 0 
| | XMSC_WMQ_SEND_EXIT     :- <null> 
| | XMSC_WMQ_SEND_EXIT_INIT   :- <null> 
| | XMSC_WMQ_SHARE_CONV_ALLOWED  :- 1 
| | XMSC_WMQ_SPARSE_SUBSCRIPTIONS  :- false 
| | XMSC_WMQ_SSL_CERT_STORES_COL  :- <null> 
| | XMSC_WMQ_SSL_CERT_STORES_STR  :- <null> 
| | XMSC_WMQ_SSL_CIPHER_SUITE   :- <null> 
| | XMSC_WMQ_SSL_FIPS_REQUIRED   :- false 
| | XMSC_WMQ_SSL_KEY_RESETCOUNT  :- 0 
| | XMSC_WMQ_SSL_PEER_NAME    :- <null> 
| | XMSC_WMQ_SSL_SOCKET_FACTORY  :- <null> 
| | XMSC_WMQ_STATUS_REFRESH_INTERVAL :- 60000 
| | XMSC_WMQ_SUBSCRIPTION_STORE  :- 1 
| | XMSC_WMQ_SYNCPOINT_ALL_GETS  :- false 
| | XMSC_WMQ_TARGET_CLIENT_MATCHING :- true 
| | XMSC_WMQ_TEMPORARY_MODEL   :- SYSTEM.DEFAULT.MODEL.QUEUE 
| | XMSC_WMQ_TEMP_Q_PREFIX    :- 
| | XMSC_WMQ_TEMP_TOPIC_PREFIX   :- 
| | XMSC_WMQ_USE_CONNECTION_POOLING :- true 
| | brokerVersion      :- -1 
| | failIfQuiesce      :- 1 
| | multicast       :- 0 
| | version       :- 7 
| | wildcardFormat      :- 0 

私は、WebSphere MQ 7.0に属するクライアントライブラリを使用する時には、上記のスタックトレースが発生していない:あなたが見ることができるようにしかし、私はクライアントモードで接続しています。助けてください。

答えて

1

MQRC_UNEXPECTED_ERRORファイルとFDCファイルがあるということは、実際にIBMとPMRを開く必要があるということです。これは起こるつもりはありません。

+0

アプリケーションが 'クライアントモード'で接続しているときは、 'no mqjbnd in java.library.path'のjava.lang.UnsatisfiedLinkErrorがあってはなりません。 –

+0

合意。これがIBMに提起することをお勧めします。ビヘイビアに欠陥があると思われます –

0

アプリケーションは通常どおり問題なく動作します。 "control + c"で停止することができます。 これが完了すると、ThreadGroup.interrupt()は と呼ばれ、アプリケーションは期待どおりに停止します。

あなたのアプリケーションはMQGETの真ん中にあったので、それをクラッシュして、なぜあなたは奇妙な結果を得るのだろうか。

MQGET APIが完了するのを待つ必要があるため、アプリケーションはキューを閉じてキューマネージャから切断する必要があります。

+0

アプリケーションは、Thread.join()を使用してMQGETが完了するのを実際に待機します。しかし、私の主な関心事は、java.library.pathの "mqjbnd"が見つからないというエラーが発生する理由です。このエラーは、「bindings-mode」を使用して接続が行われた場合にのみ適用されます。しかし、私のアプリケーションは "クライアントモード"を使って接続を確立します。 –

+0

Control-Cでは奇妙な結果が「期待」されるかもしれませんが、FDCはまだ得られません。いかなるFDCも説明できない場合は、PMRとしてIBMに報告する必要があります。 –