首页 > 分享 > WAS7部署连接IBM MQ的应用出现RC=2009的错误

WAS7部署连接IBM MQ的应用出现RC=2009的错误

最近在一台新安装的winserver2008 64位服务器的was7.0.0.37上部署了一个使用第三方包连接对方IBM MQ的应用,使用qcf的方式(对方给了一个.binding文件),配置部分的代码如下:

public void initMethod() {

                try {

                        String filePath = "file:/"+CdmIContextListener.getWebRootDir()+"/WEB-INF/mq";

                        // Initiate the config.

                        JmsConfigInJndi jmsConfig = new JmsConfigInJndi();

                        jmsConfig.setInitCtxFac("com.sun.jndi.fscontext.RefFSContextFactory");

                        jmsConfig.setPrvdrUrl(filePath);

                        jmsConfig.setQcfJndiName("jms_pubsub_qcf");

                        jmsConfig.setQRcvrJndiName("jms_fgos_pubsub_receive_q"); //queue name,need input

                        MsgRcvrOptions rcvrOptions = new MsgRcvrOptions();

                        rcvrOptions.setSelector("Topic='/CDM/cdmInfo'");       //topic name,need input

                        JmsMsgReceiver msgRcvr = (JmsMsgReceiver) MsgRcvrFactory.getMsgReceiver(jmsConfig,

                                        MsgRcvrFactory.RCVR_PURE_JMS_WITHOUT_TRX);

                        msgRcvr.startListener(jmsConfig, rcvrOptions, receiveCdmMsgListener);

                }catch(MQMsngrException e){

                        log.error(logkey+""+e);

                        e.printStackTrace();

                }

        }

连接部分的类JmsRsrcBuilder.java如下:

package com.ca.soa.i.mqmsngr.trans.jms;

import java.util.Hashtable;

import javax.jms.JMSException;

import javax.jms.Queue;

import javax.jms.QueueConnection;

import javax.jms.QueueConnectionFactory;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import com.ca.soa.i.mqmsngr.exception.MQMsngrException;

public class JmsRsrcBuilder {

        private Context ctx;

        private QueueConnectionFactory qcf;

        private Log log = LogFactory.getLog(JmsRsrcBuilder.class);

        public JmsRsrcBuilder(String cfJndiName) throws NamingException, JMSException {

                // Use default context factory and provider URL.

                ctx = new InitialContext();

                // Finding the ConnectionFactory

                qcf = (QueueConnectionFactory) ctx.lookup(cfJndiName);

        }

        public JmsRsrcBuilder(JmsConfigInJndi config) throws NamingException, JMSException {

                // Use JMSAdmin to generate the binding file containing the

                // definition of Connection Factory.

                //Hashtable jndiHash = new Hashtable();

                Hashtable jndiHash = new Hashtable();

                jndiHash.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, config.getInitCtxFac());

                jndiHash.put(javax.naming.Context.PROVIDER_URL, config.getPrvdrUrl());

                ctx = new InitialContext(jndiHash);

                // Finding the Connection Factory

                qcf = (QueueConnectionFactory) ctx.lookup(config.getQcfJndiName());

        }

        public QueueConnection getQConn() throws MQMsngrException {

                QueueConnection qConn = null;

                try {

                        qConn = qcf.createQueueConnection();

                } catch (Throwable t) {

                        // Catch anything error, and log the errors.

                        String errMsg = "Fail to create connection to MQ.";

                        log.error(errMsg, t);

                        // Release any resources has been occupied.

                        JmsRsrcCollector.releaseResource(null, qConn);

                        // Throw exception.

                        throw new MQMsngrException(errMsg, t);

                }

                return qConn;

        }

        public Queue getQueue(String qJndiName) throws NamingException {

                Queue queue = (Queue) ctx.lookup(qJndiName);

                return queue;

        }

}

出现如下错误:

2016-10-19 15:07:37,818 INFO [com.ca.soa.i.mqmsngr.trans.jms.JmsMsgReceiver] - ========== >>> Prepare to start MsgLsnrMonitor to handle the MsgListener object.

2016-10-19 15:07:37,818 INFO [com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor] - isTheFirstLoop=true,runError=false,stopRunFlag=false

2016-10-19 15:07:37,958 ERROR [com.ca.soa.i.mqmsngr.trans.jms.JmsRsrcBuilder] - Fail to create connection to MQ.

javax.jms.JMSException: CC=2;RC=2009

        at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.checkConnectionPV7Capable(WMQConnectionFactory.java:8536)

        at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7383)

        at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:276)

        at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6058)

        at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:115)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsRsrcBuilder.getQConn(JmsRsrcBuilder.java:54)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor.testQcf(JmsMsgLsnrMonitor.java:247)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor.retryQConn(JmsMsgLsnrMonitor.java:147)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor.run(JmsMsgLsnrMonitor.java:86)

        at java.lang.Thread.run(Thread.java:736)

2016-10-19 15:07:37,958 ERROR [com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor] - Exception occured.

com.ca.soa.i.mqmsngr.exception.MQMsngrException: Fail to create connection to MQ.

        at com.ca.soa.i.mqmsngr.trans.jms.JmsRsrcBuilder.getQConn(JmsRsrcBuilder.java:65)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor.testQcf(JmsMsgLsnrMonitor.java:247)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor.retryQConn(JmsMsgLsnrMonitor.java:147)

        at com.ca.soa.i.mqmsngr.trans.jms.JmsMsgLsnrMonitor.run(JmsMsgLsnrMonitor.java:86)

        at java.lang.Thread.run(Thread.java:736)

Caused by:

通过验证,在这台was服务器上,可以通过客户端连接MQ服务器的队列,应用包部署在这台服务器上的tomcat上也能正常连接MQ队列,所以服务器的网络策略和队列连接上限都是没有问题的。而且在重装系统之前的winserver 2003 32位服务器上的was7.0.0.37上该应用包能正常连接上队列(因为是别人安装的,所以不知道也看不到做了什么特殊配置)。我使用的是第三方的jar包连接的MQ服务器,不是websphere MQ的配置,为什么错误中会有类似

com.ibm.msg.client.wmq.factories.WMQConnectionFactory.checkConnectionPV7Capable(WMQConnectionFactory.java:8536)

at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7383)

属于websphere MQ中的类报出的错误?我的was7还需要做别的配置吗?或者需要添加别的jar包到was下才能正常连接队列?

相关知识

Could not send gratuitous arps. rc=127
IBM 111周年新里程碑:「新五月花号」复活历史,横跨大西洋
MQ
服务器部署后 访问出错的原因和解决办法
红米'rm257'种皮颜色遗传模式分析及Rc基因功能标记开发
如何部署一个健壮的 apache
Linux跨平台部署DotNetCore记录
Python常见的错误以及其解决方案
基于单片机的烟雾报警系统的毕业论文
下列关于植物激素应用的叙述,错误的是( )

网址: WAS7部署连接IBM MQ的应用出现RC=2009的错误 https://m.huajiangbk.com/newsview537489.html

所属分类:花卉
上一篇: 点、线、面、块在花艺设计中的应用
下一篇: 花毛茛插花应用上是怎样的? 爱问