我必须从 JAVA 控制台程序向 APACHE Tomcat 7.0.42 服务器上的 servlet 发送消息,并使用 ActiveMQ 5.8.0 并将确认消息发送回程序并继续相同的操作,直到服务器脱机。
我对 JMS 完全陌生,我只知道 servlet、jsp、侦听器,即没有框架。
我有:Eclipse-Kepler 和 JDK1.7,但无法在 Apache 上配置 ActiveMQ。
我阅读了很多博客,但似乎没有任何效果
请指导我如何解决这个问题。
谢谢。
如果您只使用 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 提供程序。