JMS - ActiveMQ - Servlet(远程服务器(Apache-ActiveMQ))和控制台Java程序

时间:2013-09-27 10:10:11

标签: java tomcat servlets jms activemq

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

我是JMS的新手,我只知道servlet,jsp,听众,即。没有框架。
我有:Eclipse-Kepler和JDK1.7并且无法在Apache上配置ActiveMQ 我阅读了很多博客,但似乎没有任何工作

请指导我如何处理这个问题。

谢谢你。

1 个答案:

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