Je suis assez nouveau pour IBM MQ, mais je l'ai regardé des échantillons d'IBM et écrit un outil en Java qui peut lister les noms de file d'attente. J'utilise PCFAgent:
PCFAgent agent = new PCFAgent(hostname, port, channelName);
PCFParameter[] parameters = { new MQCFST(CMQC.MQCA_Q_NAME, "*"),
new MQCFIN(CMQC.MQIA_Q_TYPE, CMQC.MQQT_LOCAL)};
MQMessage[] responses = agent.send(CMQCFC.MQCMD_INQUIRE_Q_NAMES, parameters);
MQCFH cfh = new MQCFH(responses[0]);
for (int i = 0; i < cfh.parameterCount; i++) {
System.out.println (PCFParameter.nextParameter (responses [0]));
}
Cela fonctionne très bien quand le MQ il n'y a pas d'autorisation nom d'utilisateur / mot de passe, mais quand cela est en place, je reçois le RC2035 d'erreur « MQRC_NOT_AUTHORIZED ».
Est-il possible d'authentifier en spécifiant le nom d'utilisateur / mot de passe en quelque sorte, en utilisant PCFAgent comme ça?
(Ou, est-il une autre façon d'authentifier et les files d'attente liste?)
Vous pouvez utiliser le constructeur PCFAgent alternatif qui prend un objet MQQueueManager.
Pour les paramètres de connexion fixes et UserID / mot de passe lors de la création de l'objet MQQueueManager, soit l'utilisation de la classe MQEnvironment statique, ou de passer une table de hachage de propriétés souhaitées sur le constructeur MQQueueManager.
Hashtable<String, Comparable<?>> props = new Hashtable<String, Comparable<?>>();
props.put(MQConstants.TRANSPORT_PROPERTY, MQConstants.TRANSPORT_MQSERIES_CLIENT);
props.put(MQConstants.HOST_NAME_PROPERTY, hostname);
props.put(MQConstants.CHANNEL_PROPERTY, channel);
props.put(MQConstants.PORT_PROPERTY, new Integer(port));
props.put(MQConstants.USER_ID_PROPERTY, userName);
props.put(MQConstants.USE_MQCSP_AUTHENTICATION_PROPERTY, Boolean.TRUE);
props.put(MQConstants.PASSWORD_PROPERTY, password);
MQQueueManager qm = new MQQueueManager("MY.QM", props);
PCFAgent agent = new PCFAgent(qm);