2017-08-07 6 views
1

J'utilise MQ Java PCF API pour récupérer des informations d'une installation MQ. Il existe plusieurs constructeurs pour la classe PCFMessageAgent. Il y en a un qui accepte le nom de l'hôte, du port et du canal. J'ai montré un extrait de la documentation.Pourquoi une erreur MQRC_NOT_AUTHORIZED est-elle générée lorsque j'essaie d'obtenir des informations de canal à l'aide de PCF?

PCFMessageAgent publique (host String, port int, canal String) lance MQException Initialise une nouvelle PCFMessageAgent avec une connexion client à un gestionnaire de files d'attente.
Le code est je

PCFMessageAgent agent = new PCFMessageAgent(host, port, "SYSTEM.DEF.SVRCONN"); 
    PCFMessage pcfCmd = new PCFMessage(MQConstants.MQCMD_INQUIRE_CHANNEL); 
    pcfCmd.addParameter(MQConstants.MQCACH_CHANNEL_NAME, channelName); 
    PCFMessage[] pcfResponse = agent.send(pcfCmd); 

mais j'obtiens une erreur MQRC_NOT_AUTHORIZED

Exception in thread "main" com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'. 
    at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:249) 
    at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:450) 
    at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:487) 
    at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:97) 
    at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:194) 
    at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:868) 

Pourquoi ai-je cette erreur? Comment puis-je réparer ça.

Je l'ai trouvé dans les journaux d'erreurs. Toute aide sera très appréciée.

07/08/17 15:42:51 - Process(3294.15) User(user1) Program(amqrmppa) 
        Host(ubuntuvm-2) Installation(Installation1) 
        VRMF(8.0.0.7) QMgr(QM_FR2_2) 

AMQ9777: Channel was blocked 

EXPLANATION: 
The inbound channel 'SYSTEM.DEF.SVRCONN' was blocked from address 
'192.168.56.101' because the active values of the channel matched a record 
configured with USERSRC(NOACCESS). The active values of the channel were 
'CLNTUSER(user1)'. 
ACTION: 
Contact the systems administrator, who should examine the channel 
authentication records to ensure that the correct settings have been 
configured. The ALTER QMGR CHLAUTH switch is used to control whether channel 
authentication records are used. The command DISPLAY CHLAUTH can be used to 
query the channel authentication records. 
----- cmqxrmsa.c : 1462 ------------------------------------------------------- 
07/08/17 15:42:51 - Process(3294.15) User(user1) Program(amqrmppa) 
        Host(ubuntuvm-2) Installation(Installation1) 
        VRMF(8.0.0.7) QMgr(QM_FR2_2) 

AMQ9999: Channel 'SYSTEM.DEF.SVRCONN' to host '192.168.56.101' ended 
abnormally. 

EXPLANATION: 
The channel program running under process ID 3294 for channel 
'SYSTEM.DEF.SVRCONN' ended abnormally. The host name is '192.168.56.101'; in 
some cases the host name cannot be determined and so is shown as '????'. 
ACTION: 
Look at previous error messages for the channel program in the error logs to 
determine the cause of the failure. Note that this message can be excluded 
completely or suppressed by tuning the "ExcludeMessage" or "SuppressMessage" 
attributes under the "QMErrorLog" stanza in qm.ini. Further information can be 
found in the System Administration Guide. 
----- amqrmrsa.c : 930 -------------------------------------------------------- 

Répondre

1

Le problème est que vous tentez de vous connecter au canal SYSTEM.DEV.SVRCONN. Par défaut, il existe une règle CHLAUTH qui bloque l'accès aux canaux nommés SYSTEM.*.

Vous pouvez créer un nouveau canal SVRCONN dont le nom ne commence pas par SYSTEM et il passerait cette vérification.

+0

@Ajay Cela vous a-t-il aidé à résoudre votre problème? Si cela vous a été utile, veuillez voir "[Que dois-je faire lorsque quelqu'un répond à ma question?] (Https://stackoverflow.com/help/someone-answers)". En particulier, acceptez et votez si vous l'avez trouvé utile. – JoshMc

+0

@Ajay, si vous n'êtes pas au courant, pour accepter une réponse, cliquez sur la coche grisée qui est en dessous de la flèche vers le bas du vote à gauche de la réponse. – JoshMc