【问题标题】:work with IBM MQ from Java从 Java 使用 IBM MQ
【发布时间】:2018-12-06 08:28:12
【问题描述】:

我在通过 java 连接 IBM MQ 时遇到问题
这段代码

 val cf: MQQueueConnectionFactory?
    var mqConnection: QueueConnection? = null
    var session: QueueSession? = null
    var sender: QueueSender? = null
    var value = ""
    try {
        cf = MQQueueConnectionFactory()
        cf.hostName = host
        cf.port = port
        cf.queueManager = queueManager
        cf.transportType = transport
        cf.channel = channelName
        cf.clientReconnectOptions = WMQConstants.WMQ_CLIENT_RECONNECT_Q_MGR
        cf.clientReconnectTimeout = 3600

        mqConnection = cf.createQueueConnection()

丢弃异常“JMSCMQ0001:WebSphere MQ 调用失败,带有 compcode '2' ('MQCC_FAILED') 原因 '2035' ('MQRC_NOT_AUTHORIZED')"

当我尝试创建连接时cf.createQueueConnection()

我不明白什么是问题。
我使用 ibmmq lib 9.0.2.0 版本,但此代码也不适用于 7.5.0.1 版本

【问题讨论】:

  • 您应该让 MQ 管理员查看队列管理器的 AMQERR01.LOG 以确定您收到 2035 错误的原因。有几个不同的原因,解决方法取决于原因是什么。这两个答案都为两个常见原因提供了可能的解决方案。如果您可以使用队列管理器日志中的内容更新您的问题,那么有人为您提供更具体的答案将会很有帮助。

标签: java kotlin websphere ibm-mq


【解决方案1】:

MQRC 2035 表示用户没有适当的权限来连接到队列管理器。原因可以在队列管理器errors 目录中的AMQERR*.log 中找到。 CHLAUTH 默认启用。您需要添加CHLAUTH 规则。以下链接提供了有关创建/修改 CHLAUTH

的详细信息

IBM MQ 7.5.0 > WebSphere MQ > Reference > Administration reference > MQSC reference > The MQSC commands > SET CHLAUTH

如果您想了解更多关于 CHLAUTH 的详细信息,请点击以下链接:

CHLAUTH Made Simple: Common Scenarios and Examples and How to Verify them with RUNCHECK

【讨论】:

  • 你的意思是这些动作需要在服务器端进行吗?如果这应该由我在 Java 代码或 IBM MQ 客户端完成,那么我不知道该怎么做
  • 这些必须在队列管理器端完成,而不是在客户端
  • 感谢您的建议。我会努力解决的!
【解决方案2】:

mqConnection = cf.createQueueConnection()

您应该/需要为连接传递用户 ID 和密码。

mqConnection = cf.createQueueConnection("myUserId", "mypwd");

【讨论】:

  • 没关系,但是服务的所有者 (IBM MQ) 表示无需密码和登录即可访问队列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多