com.flvcd.servlet.JMSListener
然后在src下的包里新建一个类,类名是JMSListener.java
再复制一下代码到你的类中:
package com.flvcd.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
publicclass JMSListener extends HttpServlet implements MessageListener {
/**初始化jms连接,创建topic监听器*/
publicvoid init(ServletConfig config) throws ServletException {
try {
InitialContext initCtx = new InitialContext();
Context envContext = (Context) initCtx.lookup("java:comp/env");
ConnectionFactory connectionFactory = (ConnectionFactory) envContext
.lookup("jms/FailoverConnectionFactory");
Connection connection = connectionFactory.createConnection();
connection.setClientID("MyClient");
Session jmsSession = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 普通消息订阅者,无法接收持久消息 //MessageConsumer consumer =
// jmsSession.createConsumer((Destination)
// envContext.lookup("jms/topic/MyTopic"));
// //基于Topic创建持久的消息订阅者,前提:Connection必须指定一个唯一的clientId,当前为MyClient
TopicSubscriberconsumer=jmsSession.createDurableSubscriber((Topic)envContext.lookup("jms/topic/MyTopic"), "MySub");
consumer.setMessageListener(this);
connection.start();
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
}
/**接收消息,做对应处理*/
publicvoid onMessage(Message message) {
if (checkText(message, "RefreshArticleId") != null) {
String articleId = checkText(message, "RefreshArticleId");
System.out.println("接收刷新文章消息,开始刷新文章ID=" + articleId);
} elseif (checkText(message, "RefreshThreadId") != null) {
String threadId = checkText(message, "RefreshThreadId");
System.out.println("接收刷新论坛帖子消息,开始刷新帖子ID=" + threadId);
} else {
System.out.println("接收普通消息,不做任何处理!");
}
}
privatestatic String checkText(Message m, String s) {
try {
return m.getStringProperty(s);
} catch (JMSException e) {
e.printStackTrace(System.out);
returnnull;
}
}
}
你的监听端建好
现在开始建立你发布端
同样是新建一个类MyPublish.java
然后复制一下代码到你的类里
package com.flvcd.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyPublish extends HttpSer