实例化MQ ConnectionFactory对象时出错

时间:2016-04-22 13:53:56

标签: java tomcat spring-boot ibm-mq mq

首先,我想为这里的一些无组织的写作道歉。我正在编写一个spring boot应用程序来从MQ队列中读取消息。但是我在尝试创建MQXAConnectionFactory对象的实例时遇到异常。而且我已经意识到它是由于MQXAConnectionFactory extends com.ibm.msg.client.jms.admin.JmsJndiConnectionFactoryImpl而引起的。

代码段

    @Value("${ems.mq.cf.hostName}")
    String mqHostName;
    @Value("${ems.mq.cf.port}")
    int mqPort;
    @Value("${ems.mq.cf.queueManager}")
    String mqQueueManager;
    @Value("${ems.mq.cf.channel}")
    String mqChannel;

    private ConnectionFactory mqJmsConnectionFactory() throws JMSException{

    try {

    MQXAConnectionFactory factory=new MQXAConnectionFactory();
    factory.setHostName(mqHostName);
    factory.setPort(mqPort);
    factory.setQueueManager(mqQueueManager);
    factory.setChannel(mqChannel);
    factory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
    return factory;
    }
    catch (JMSException e){
        throw new RuntimeException(e);
    }

}

问题是我在类路径上设置的任何jar都不存在com.ibm.msg.client.jms.admin包。 IBM网站上建议的解决方案如下所示也无济于事。

The type com.ibm.msg.client.jms.admin.JmsJndiDestinationImpl
cannot be resolved. It is indirectly referenced from required .class files.

本地修复

 Import the com.ibm.msg.client.jms.internal from
    wmq.jmsra.rar and add it to the build path.
    You can find the rar file under <WPS_HOME>\lib\WMQ\ra

但这对我来说不是一个选项,因为我使用的是本地tomcat服务器,并且在我的类路径上拥有该文件对我来说不是一个选项。

以下ibm罐子在我的班级路径上

1. mqjms-7.0.1.0.jar, 
2. ibm-mq-7.0.1.0.jar
3. client.osgi.jms.jar

对此有任何帮助将受到高度赞赏。合十

1 个答案:

答案 0 :(得分:2)

我终于找到了问题所在。 使用版本6或更早版本com.ibm.mq.jar&amp; com.ibm.mqims.jar。

然后添加connector.jar这似乎是最重要的。我从mqseries.net得到了这个解决方案来添加连接器jar

http://www.mqseries.net/phpBB2/viewtopic.php?t=40546

由gaya3发布

请在构建路径中添加,connector.jar,jta.jar(connector.jar在那里)(看起来连接器.jar可能已损坏或没有所有访问权限)

检查是否有访问权限

以下jar文件必须在classpath

  1. com.ibm.mq.jar
  2. com.ibm.mqims.jar
  3. connector.jar(重要)
  4. jms.jar