0

我必须从 JAVA 控制台程序向 APACHE Tomcat 7.0.42 服务器上的 servlet 发送消息,并使用 ActiveMQ 5.8.0 并将确认消息发送回程序并继续相同的操作,直到服务器脱机。

我对 JMS 完全陌生,我只知道 servlet、jsp、侦听器,即没有框架。
我有:Eclipse-Kepler 和 JDK1.7,但无法在 Apache 上配置 ActiveMQ。
我阅读了很多博客,但似乎没有任何效果

请指导我如何解决这个问题。

谢谢。

4

1 回答 1

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 提供程序。

于 2013-09-27T11:19:31.390 回答