用的client mode,原来一直在同一台机器测试,都是好用的,发消息都能送到queue里头。最近要开始部署了,mq和数据库放在一台服务器上,websphere application server放在另一台服务器上,在websphere administrative console里头创建queue connection factory,测试是可以连接上mq的,但是我在我本地测试机器上有个java写的queue消息发送小程序,
代码项目可行性研究报告 如下
MQQueueConnectionFactory m_MQQConnFactory = new com.ibm.mq.jms.MQQueueConnectionFactory();
try {
m_MQQConnFactory.setHostName(host);
m_MQQConnFactory.setQueueManager(queueManager);
m_MQQConnFactory.setPort(port);
m_MQQConnFactory.setChannel(channelName);
m_MQQConnFactory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
m_MQQConnFactory.setFailIfQuiesce(JMSC.MQJMS_FIQ_YES);
// Make sure CCSID, otherwise it will not connect to MQ.
m_MQQConnFactory.setCCSID(ccsid);
QueueConnection m_QConn = m_MQQConnFactory.createQueueConnection();
。。。。
运行到上面createQueueConnection这里出错,出现如下错误
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'x.x.x.x:XXX_QM'
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:614)
at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2549)
at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1899)
at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:176)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:196)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:114)
原来mq装在本地,这个程序一直好用的。请问如何解决这个问题?
你的程序所在 windows 用户与MQ 所在windows 用户域有关系吗?你现在是用当前 windows 用户访问目标用户 MQ,用户凭证可能有关联的,你在程序的机器上换一个 windows 用户登录,这个 windows 用户在目标机器上也存在。另外测试 TCP 设置是否都是真实的 IP 而不是 localhost 这样的参数。
1, 查看QueueManager有没有起动 2, 查看侦听端口有没有起动 3, 查看有没有中间有防火墙阻断了端口通信。
是因为ccsid不一致导致的,server上安装默认都是用于english的ccsid,我客户端把这个改成一致的就好用了。