尝试使用PCF获取通道信息时,为什么会出现MQRC_NOT_AUTHORIZED错误?

时间:2017-08-07 14:22:05

标签: java ibm-mq pcf

我正在使用MQ Java PCF API从MQ安装中检索信息。 PCFMessageAgent类有几个构造函数。有一个接受主机,端口和通道名称。我已经展示了文档中的摘录。

public PCFMessageAgent(String host,                        int端口,                        字符串频道)                 抛出MQException 使用与队列管理器的客户端连接初始化新的PCFMessageAgent。
我的代码是

    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);

但是我收到了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)

为什么会出现此错误?我该如何解决这个问题。

我在错误日志中找到了这个。任何帮助将不胜感激。

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 --------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试连接到频道SYSTEM.DEV.SVRCONN。默认情况下,会有一个CHLAUTH规则阻止访问名为SYSTEM.*的频道。

您可以创建一个新的SVRCONN频道,该频道的名称不以SYSTEM开头,并且会通过此检查。