2017-10-27 27 views
-2

私のアプリケーションでは、com.ibm.mq.jmscom.ibm.mq.jmqiおよびcom.ibm.mq.pcf - バージョン7.0.1.6のMQ 7を使用していました。私は最近MQ 9にアップグレードしたので、ドライバをcom.ibm.mq.allclient,com.ibm.mq.traceControl(バージョン9.0.0.0-p900-L160512.4)とjavax-jms-api-2.0.1に置き換えました(これの一部であるJMSRuntimeExceptionクラスに対してエラーを出していたので、このJARを含めなければなりませんでしたJAR)。今、アップグレードされたドライバでアプリケーションを実行してMQ 9サーバーに接続しようとすると、以下のエラーが発生します。以前のドライバでドライバを置き換えると、アプリケーションは期待どおりに動作しています。MQ 7から9へのアップグレード

MQ 9に接続するために使用しているドライバが正しいのかどうか教えていただけますか?他のJARファイルがありませんか?または、以下のエラーの原因が他にありますか?

Exception in thread "main" {_name=com.epo.core.SystemException, com.ibm.msg.client.jms.DetailedJMSSecurityException=com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'queue' with connection mode 'Client' and host name 'Hostname(port)'. 
Please check if the supplied username and password are correct on the QueueManager to which you are connecting. 
     at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:531) 
     at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215) 
     at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:422) 
     at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8475) 
     at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7913) 
     at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:299) 
     at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:236) 
     at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6024) 
     at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:111) 
     . . . 
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED'). 
     at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203) 
     ... 14 more 
} 
+0

MQキュー・マネージャーは、どのようなバージョンがありますか?アップグレードされたのか、それとも変更されたのでしょうか? 'JMSWMQ2013'を取得すると同時に、キューマネージャ' AMQERR01.LOG'にエラーが表示されているかどうかを調べることができます。また、 'JMSWMQ2013'に沿ってリンクされた例外を提供すると役に立ちます。 Javaアプリケーションの資格情報をIBM MQに渡す方法を示すサンプルコードを提供できますか。 MQサーバがv8以降にある場合は、 'DIS QMGR CONNAUTH'と' DIS AUTHINFO(の値)ALL 'の出力を提供します。 v7.1以降ではv8/v9も含めて 'DIS QMGR CHLAUTH'を提供します。 – JoshMc

+0

また、質問の下にある編集リンクをクリックして質問に詳細を追加してください。フォーマットがうまく行かず、検索できないため、コメントとして追加しないでください。 – JoshMc

+0

問題のトラブルシューティングを支援するために作成した最初のコメントにすべての情報をもう一度尋ねますが、リンクされた例外を提供したようですが、サーバー側のエラーログの詳細はわかりません。 @a_cornish_pastyの答えは、問題の原因である可能性が非常に高いです。 – JoshMc

答えて

0

@JoshMcが彼のコメントで示唆したように、あなたは、キュー・マネージャは、おそらくアプリケーションにMQRC_NOT_AUTHORIZED(2035)理由コードを返すよう、キュー・マネージャのエラー・ログ(AMQERR01.logファイル)を見てする必要があります。アプリケーションが受け取るリンクされた例外でこれを確認できます。

リストされているバージョンでは、接続の試行中に、クライアントライブラリアップグレード後の認証のために、クライアントがキューマネージャにユーザ識別子を流していることがあります。

MQ v7.0.1.x Java/JMSクライアントでは、ユーザー名を指定できなかったため、Java/JMSクライアントはキュー・マネージャーに渡されませんでした。サーバ接続チャネルにMCAUSERが設定されていないTCP/IP(CLIENTトランスポート)を介して接続する場合、アプリケーションからの接続はチャネルプロセスが実行されているユーザ「mqm」を採用し、接続しないようにしてください。2035.

MQ/V7.1から、Java/JMSクライアントはではありません。は、キュー・マネージャーに空のユーザーIDを送信します。アプリケーションによってユーザー識別子が指定されていない場合、Javaシステム・プロパティー「user.name」(つまり、アプリケーションのJVMを開始したユーザー)の値は、接続要求中にキュー・マネージャーに流れます。このユーザーにキュー・マネージャーに必要な権限が与えられていない場合、接続要求は2035の理由コードで拒否されます。キュー・マネージャー・エラー・ログは、おそらく、許可されなかったユーザーIDを報告します。

次のTechNoteは、ビューのWebShere Application Serverの観点からこれを説明したが、同じことは、スタンドアロンのJava SEアプリケーションのための真である:

http://www-01.ibm.com/support/docview.wss?uid=swg21662193

関連する問題