2016-09-09 15 views
0

Windows 7にIBM MQバージョン7.5がインストールされています。以下を使用してキューマネージャ、チャネル、コマンド。JavaクライアントからIBM MQへの接続に失敗しました:完了コード '2'、理由 '2035'

//CREATE THE QUEUE MANAGER 
crtmqm.exe PG3RT1 

//START THE QUEUE MANAGER AS INTERACTIVE 
strmqm.exe -si PG3RT1 

//CONNECT AS SCRIPT CONSOLE 
runmqsc.exe PG3RT1 

//CREATE THE CHANNEL TO APPLICATION CONNECTIVITY 
DEFINE CHANNEL(PG3RT1.CHANNEL) CHLTYPE(SVRCONN) TRPTYPE(TCP) 

//CREATE THE LISTENER 
DEFINE LISTENER(LISTENER.PG3RT1) TRPTYPE(TCP) PORT(1414) 

//START THE LISTENER 
START LISTENER(LISTENER.PG3RT1) 

次のJavaクライアントを使用してキューマネージャに接続しようとしています。 接続は拒否され、次のエラーが発生します。

15:06:52.175 [localhost-startStop-1] ERROR c.b.c.s.s.m.MQUtil - MQJE001: Completion Code '2', Reason '2035'. 
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'. 
     at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:230) 
     at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:553) 
     at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:593) 
     at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:96) 
     at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:198) 
     at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:893) 
     at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:780) 
     at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:729) 
     at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:177) 
     at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:745) 
     at com.bcs.cas.sach.simulator.mq.MQUtil.init(MQUtil.java:52) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 

接続が失敗した理由を誰にでも知らせることができます。 キューマネージャでリモート管理を有効にする必要がありますか?続き

は、私はこれは、認可の問題である可能性が極めて高いです接続

public void init(){ 
    MQEnvironment.hostname = hostName; 
    MQEnvironment.port = Integer.valueOf(port); 
    MQEnvironment.channel = serverChannelName; 
    MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); 
    LOGGER.info("queueManagerName: " + queueManagerName); 
    LOGGER.info("hostName: " + hostName); 
    LOGGER.info("serverChannelName: " + serverChannelName); 
    LOGGER.info("port: " + port); 
    //initialize the connection pool 
    MQPoolToken token = MQEnvironment.addConnectionPoolToken(); 
    try { 
     mqQueueManager = new MQQueueManager(queueManagerName, MQEnvironment.properties); 
     LOGGER.info("mqQueueManager: " + mqQueueManager); 
    } catch (MQException e) { 
     LOGGER.error(e.getMessage(), e); 
    } 
} 
+0

エラーの詳細は、MQエラーログに記録する必要があります。それを提供することはできますか? –

答えて

2

MQRC2035はMQRC_NOT_AUTHORIZEDです。これが戻された理由は、キュー・マネージャーのAMQERRログにあります。

CHLAUTHは設定されていないため、デフォルトではオンになっているため、CHLAUTHルールに合格していないため接続できません。

+0

返事をありがとう。 CHLAUTHは、デフォルトでキュー・マネージャーで使用可能になっていました。私はCHLAUTHを無効にしたので、今接続することができます。 – Mayuran

1

のために使用されるコードのfragementです。最も簡単には、リターンコードを見て、それができる権限の理由の

mqrc 2035 returns MQRC_NOT_AUTHORIZED

一つを解釈することです。これは、QueueManager(setmqaut)に適切な権限を設定し、次に説明されているように許可するMQに接続しているユーザをチャネル有効にすることによって解決できますhere。これを投稿すると、コードを使用してMQI環境にuserIdを追加して接続できます。

また、technoteを参照することもできます。

関連する問題