gpt4 book ai didi

java - 带有 Java 客户端的 IBM MQ AMS

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:04 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,它可以向队列发送消息或从队列接收消息,我正在尝试将其设置为在 Linux 上使用 MQ AMS

这是我第一次设置 MQ AMS,所以我尝试了 MQ distribution 中提供的示例(JmsProvider/JmsConsumer )。

最初,我尝试了 WebSphere MQ 7.5,它预装了 java 6,我可以设置它,创建一个队列,使用附加的示例发送和接收编码消息。

但是,我的应用程序与 java 6 不兼容。

我下载了 ibm jdk 8,并尝试对其进行设置。

如果消息未编码,它会起作用;但是,如果启用了安全策略,我可以使用 WebSphere 自己的 JmsProducer 将消息发送到队列,但无法使用它们自己的 JmsConsumer 获取消息 - 获取通用 MQRC_NOT_AUTHORISED 错误(同下,java版本除外)。我关闭了 channel authorisation,并确保我用来创建消息的用户在队列管理器上被指定为 MCAUSER。但是,我的用户不在 mqm 组 中,因为该组不存在(并且我的 Linux 发行版不会对 addgroup 使用react,除了 未知命令).

然后我认为可能是我拥有的 java 8 发行版缺少对 MQ 至关重要的东西,所以我下载了 WebSphere MQ 8,其中包含 java 7,并尝试使用这个新的 java 7 再次运行 JmsProducer/JmsConsumer,针对我的旧 MQ 7.5 队列。结果是一样的——生产者成功生产消息并将消息放入队列,但消费者因 not authorised 而失败。

[userName@machineName ~]$ /opt/mqm/java/jre64/jre/bin/java -showversion -classpath $CLASSPATH JmsConsumer -m QM_TEST_AMS -d TEST.Q -h hostName -p 1616 -l CHANNEL > JmsConsumer.output
java version "1.7.0"
Java(TM) SE Runtime Environment (build pxa6470_27sr2-20141026_01(SR2))
IBM J9 VM (build 2.7, JRE 1.7.0 Linux amd64-64 Compressed References 20141017_217728 (JIT enabled, AOT enabled)
J9VM - R27_Java727_SR2_20141017_1632_B217728
JIT - tr.r13.java_20141003_74587.01
GC - R27_Java727_SR2_20141017_1632_B217728_CMPRSS
J9CL - 20141017_217728)
JCL - 20141004_01 based on Oracle 7u71-b13

com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2008: Failed to open MQ queue 'TEST.Q'.
JMS attempted to perform an MQOPEN, but WebSphere MQ reported an error.
Use the linked exception to determine the cause of this error. Check that the specified queue and queue manager are defined correctly.
Inner exception(s):
com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
FAILURE

不过,如果我切换到 Java 6,仍然可以收到这些消息。请有人指出我可能遗漏的方向,阻止 java 7/8 应用程序从队列接收编码消息,而 java 6 应用程序继续正常工作? WebSphere MQ 7.5 是否可以与 Java 7/8 一起使用?

最佳答案

根据WMQ System Requirements page for v7.5 on Linux , 尚不支持 JTE 8.0。

就其值(value)而言,v8.0 具有与您所见相同的要求 here .所有版本的顶级系统要求页面 is here .

也就是说,听起来您遇到的是策略或证书问题,而不是 JRE 问题。发送加密消息时,发件人必须拥有收件人证书的公钥。收件人必须拥有发件人的公钥。当然,两者都必须有自己的个人证书。 AMS 策略必须指定所有可能的收件人,即使其中之一是发件人。

您尚未发布策略设置或 keystore 详细信息。这些将需要调试它(并且可能发布在不同的问题中,因为这个问题是在 JRE 版本上)。此外,2035 会引发事件消息。启用授权事件并安装 MS0P SupportPac进入 MQ 资源管理器以在 SYSTEM.ADMIN.QMGR.EVENT 队列中查看它们。

Screen shot of MQ v7.5 Linus System Requirements for Java

关于java - 带有 Java 客户端的 IBM MQ AMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com