我在MQ队列管理器中有JNDI上下文,我的独立java客户端能够使用初始上下文类com.ibm.mq.jms.context.WMQInitialContextFactory
进行查找,它在MQ 8之前的版本中使用MQ客户端jar。它还具有我的类路径中的mqcontext.jar
。
使用MQ 8和9,我尝试在类路径中使用可重定位的jar 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'.
答案 0 :(得分:0)
对于 IBM MQ Classes for JMS ,您可以在知识中心页面上找到所需文件列表" What is installed for IBM MQ classes for JMS":
可重新定位的JAR文件
在企业中,可以将以下文件移动到需要为JMS运行IBM MQ类的系统:
- com.ibm.mq.allclient.jar
- com.ibm.mq.traceControl.jar
- jms.jar
- fscontext.jar
- providerutil.jar
答案 1 :(得分:0)
com.ibm.mq.jms.context.WMQInitialContextFactory
我强烈建议您不要将MQ队列管理器用作MQ JNDI的资源持有者。您应该使用基于文件的MQ JNDI或基于LDAP的MQ JNDI。
我最后一次检查时,使用WMQInitialContextFactory不允许使用MQ客户端安全性退出和/或TLS / SSL。因此,您必须在没有任何安全性的情况下连接到队列管理器。糟糕,糟糕的主意。
每天发生黑客攻击,私人/机密信息被转发到网络和/或黑暗网络,每个队列管理员都应该被锁定。