最近的项目中 要用到IBM MQ 。
写了四个接受类并实现了MessageListener监听,在servlet里面分别new 了四个类
在web 容器启动后 开始监听,但是出现的问题是 监听不到。
package com.founder.gome.bg.service.mq;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class MQServerlet extends HttpServlet {
private static final long serialVersionUID = 1L;
TntListener jt3 = null;
SnListener jt4 = null;
@Override
public void init() throws ServletException {
jt3 = new TntListener();
jt4 = new SnListener();
jt3.init();
jt4.init();
@Override
public void destroy() {
if(jt3!=null) {
jt3.distory();
}
if(jt4!=null) {
jt4.distory();
}
super.destroy();
}
}
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.msg.client.wmq.v6.jms.internal.JMSC;
public class SnListener {
SOService soService = (SOService) MQListener.wac.getBean("soService");
private static QueueConnection connection = null;
private static QueueSession session = null;
Queue ioQueue;
public void init(){
try {
MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
factory.setQueueManager(MQCommon.getProperties().getProperty("MQ_MANAGER"));
factory.setHostName(MQCommon.getProperties().getProperty("MQ_HOST_NAME"));
factory.setChannel(MQCommon.getProperties().getProperty("MQ_CHANNEL"));
factory.setPort(Integer.valueOf(MQCommon.getProperties().getProperty("MQ_PROT")));
factory.setCCSID(Integer.valueOf(MQCommon.getProperties().getProperty("MQ_CCSID")));
if(connection==null) {
connection = factory.createQueueConnection(MQCommon.getProperties().getProperty("MQ_USER"), MQCommon.getProperties().getProperty("MQ_PWD"));
connection.start();
}
if(session==null) {
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);;
}
ioQueue = session.createQueue("QL_GOME01_DRAGON_SN_TO_EC_SN");
QueueReceiver queueReceiver = session.createReceiver(ioQueue);
queueReceiver.setMessageListener(new MessageListener(){
public void onMessage(Message message) {
try {
String messageTxt = ((TextMessage) message).getText();
System.out.println("messageTxt is " + messageTxt);
soService.getXML(messageTxt, "QL_GOME01_DRAGON_SN_TO_EC_SN");
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
try {
if(session !=null) {
session.close();
}
if(connection!=null) {
connection.close();
}
} catch (JMSException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
public void distory() {
try {
if(session != null) {
session.close();
session = null;
}
if(connection != null) {
connection.close();
connection = null;
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
package com.founder.gome.bg.service.mq;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.msg.client.wmq.v6.jms.internal.JMSC;
public class TntListener {
SOService soService = (SOService) MQListener.wac.getBean("soService");
private static QueueConnection connection = null;
private static QueueSession session = null;
Queue ioQueue;
public void init(){
try {
MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
factory.setQueueManager(MQCommon.getProperties().getProperty("MQ_MANAGER"));
factory.setHostName(MQCommon.getProperties().getProperty("MQ_HOST_NAME"));
factory.setChannel(MQCommon.getProperties().getProperty("MQ_CHANNEL"));
factory.setPort(Integer.valueOf(MQCommon.getProperties().getProperty("MQ_PROT")));
factory.setCCSID(Integer.valueOf(MQCommon.getProperties().getProperty("MQ_CCSID")));
if(connection==null) {
connection = factory.createQueueConnection(MQCommon.getProperties().getProperty("MQ_USER"), MQCommon.getProperties().getProperty("MQ_PWD"));
connection.start();
}
if(session==null) {
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);;
}
ioQueue = session.createQueue("QL_GOME01_DRAGON_TNT_TO_EC_TNT");
QueueReceiver queueReceiver = session.createReceiver(ioQueue);
queueReceiver.setMessageListener(new MessageListener(){
public void onMessage(Message message) {
try {
String messageTxt = ((TextMessage) message).getText();
System.out.println("messageTxt is " + messageTxt);
soService.getXML(messageTxt, "QL_GOME01_DRAGON_TNT_TO_EC_TNT");
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
try {
if(session !=null) {
session.close();
}
if(connection!=null) {
connection.close();
}
} catch (JMSException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
public void distory() {
try {
if(session != null) {
session.close();
session = null;
}
if(connection != null) {
connection.close();
connection = null;
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
package com.founder.gome.bg.service.mq;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class MQCommon {
public static Properties props = null;
public static Properties getProperties() {
try {
props = new Properties();
InputStream in = new BufferedInputStream(new FileInputStream(MQListener.rootDir+File.separator+"WEB-INF"+File.separator+"classes"+File.separator+"MQ.properties"));
props.load(in);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return props;
}
}
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com