我必须从JAVA控制台程序向APACHE Tomcat 7.0.42服务器上的servlet发送消息并使用ActiveMQ 5.8.0并将确认消息发送回程序并继续执行相同操作直到服务器脱机。 / p>
我是JMS的新手,我只知道servlet,jsp,听众,即。没有框架。
我有:Eclipse-Kepler和JDK1.7并且无法在Apache上配置ActiveMQ
我阅读了很多博客,但似乎没有任何工作
请指导我如何处理这个问题。
谢谢你。
答案 0 :(得分:0)
如果您只使用servlet-container(Tomcat),则可以创建一个非托管线程,如下所示:
@WebListener
public class MyServletContextListener implements ServletContextListener {
public void contextInitialized(final ServletContextEvent sce) {
final java.util.Timer timer = new Timer();
// Executes repeatedly (delay = 4000, period = 5000)
timer.schedule(new ReplyTask(), 4000, 5000);
sce.getServletContext().setAttribute("replyTaskTimer", timer);
}
public void contextDestroyed(final ServletContextEvent sce) {
final java.util.Timer timer =
(Timer) sce.getServletContext().getAttribute("replyTaskTimer");
timer.cancel();
}
}
在ReplyTask
中只读取传入队列,并在传出队列上发送内容(我建议使用两个不同的队列来ping和pong)。您必须取消计时器,否则该线程将在取消部署和重新部署后继续存在。
注意:如果您使用的是应用程序服务器(例如JBoss),则可以使用消息驱动Bean(MDB)来实现。更优雅,更简洁,线程由应用程序服务器管理。使用像JBoss这样的应用程序服务器的额外好处是集成的HornetQ JMS提供程序。