我在MQ队列管理器中有JNDI上下文,我的独立java客户机能够进行查找,使用初始上下文类com.ibm.mq.jms.context.WMQInitialContextFactory,它在MQ 8之前使用MQ客户端jars,我的类路径中也有mqcontext.jar。
使用MQ 8和9,我尝试在类路径中使用可重定位的jars com.ibm.mq.allclient.jar和com.ibm.mq.traceControl.jar,而JNDI查找失败了。如果我将旧的mqcontext.jar添加到类路径中,则会得到以下错误。
javax.naming.NamingException: Caught an MQ Exception: com.ibm.msg.client.jms.DetailedMessageFormatException: JMSCC0053: An exception occurred deserializing a message, exception: 'java.io.InvalidClassException: com.ibm.msg.client.wmq.common.WMQConnectionName; local class incompatible: stream classdesc serialVersionUID = 3226780381239434112, local class serialVersionUID = -2174857328193645055'.发布于 2017-09-12 05:07:15
对于用于JMS的IBM类,您可以在知识中心页面“为JMS安装的IBM类”上找到所需的文件列表:
可释放JAR文件 在企业中,可以将以下文件移动到需要运行JMS的IBM类的系统中:
发布于 2017-09-12 22:21:06
com.ibm.mq.jms.context.WMQInitialContextFactory
我强烈建议您不要使用MQ队列管理器作为MQ的资源持有人。您应该使用基于文件的MQ或基于LDAP的MQ。
上次我检查时,使用WMQInitialContextFactory不允许使用MQ客户端安全出口和/或TLS/SSL。因此,必须在没有任何安全性的情况下连接到队列管理器。坏主意,坏主意。
每天都会发生黑客攻击,私人/机密信息被丢弃到网络和/或黑暗网络中,每个队列管理器都应该被严格封锁。
https://stackoverflow.com/questions/46167249
复制相似问题