【发布时间】:2012-02-11 18:50:06
【问题描述】:
我想在 WebSphere MQ 服务器上创建一个队列管理器和一个队列,我想做两件事 1) 从客户端使用 WMQ Explorer 访问队列管理器和队列 2) 编写一个Java 独立应用程序,该应用程序在客户端机器上运行并从队列中放入和接收消息。
但是,我遇到了身份验证异常。请让我知道我做错了什么?
Linux 服务器盒:
我安装了 WebSphere MQ v7.1
队列管理器 QM_TEST 已创建(crtmqm、strmqm 命令)
本地队列 @987654324@ 创建(runmqsc 和 define qlocal)
已定义 SVRCONN 通道 (DEFINE CHANNEL (TEST_CHANNEL) CHLTYPE (SVRCONN) TRPTYPE (TCP))
启动了一个监听器 (runmqlsr -t tcp -m QM_TEST -p 1414)
Linux 客户端:
尝试使用主机名、IP 地址、队列管理器名称和通道名称来显示/隐藏队列管理器;但是我收到以下错误:
Access not permitted. You are not authorized to perform this operation. (AMQ4036)
Severity: 10 (Warning)
Explanation: The queue manager security mechanism has indicated that the userid associated with this request is not authorized to access the object.
尝试使用java代码访问队列管理器和队列,重点如下:
public void sendMail(Mail mail) { MQConnectionFactory cf = new
MQQueueConnectionFactory(); Connection conn = null; try { //config
cf.setHostName("hostname"); cf.setPort(1414);
cf.setQueueManager("QM_TEST"); cf.setChannel("TEST_CHANNEL");
cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);//WMQ_CM_DIRECT_TCPIP);
WMQ_CM_CLIENT
conn = cf.createConnection(); //fails here
但是我得到以下错误:
发生错误:JMSWMQ2013:安全认证无效 为具有连接模式的 QueueManager 'QM_TEST' 提供的 “客户端”和主机名“主机名(1414)”。
你能帮忙吗?如何传递安全认证信息?现在,如果我也可以禁用安全性就可以了。只需要让它工作吗?
如果我需要提供更多信息,请告诉我。
更新:
我创建了 'mq-user' linux 用户(mq-users 组)。启用 CHLAUTH(默认)。
创建队列管理器 QM_TEST(使用 sudo mqm)后,我再次使用 sudo mqm 执行了以下 mqsc 命令:
DEFINE QLOCAL(TEST_QUEUE)
SET AUTHREC PROFILE('TEST_QUEUE') OBJTYPE(QUEUE) PRINCIPAL('mq-user') AUTHADD(PUT,GET)
SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('mq-user') AUTHADD(CONNECT)
DEFINE CHANNEL (TEST_CHANNEL) CHLTYPE (SVRCONN) TRPTYPE (TCP)
SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS('xxx.xx.xxx.*') MCAUSER('mq-user')
DEFINE LISTENER (TEST_LISTENER) TRPTYPE (TCP) CONTROL (QMGR) PORT (1414)
START LISTENER (TEST_LISTENER)
我仍然收到 AMQ4036 access not allowed 错误。请注意,我从以第三用户身份登录的第三台远程计算机(客户端计算机)访问队列管理器和队列。但是我意识到我可以传递“mq-user”凭据。我希望某处有明确的分步说明,WebShere MQ 71。信息中心对我来说不够清楚。
这里还缺少什么?
【问题讨论】: