繁体   English   中英

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

[英]JMS - ActiveMQ - Servlet(Remote Server (Apache-ActiveMQ)) and Console Java Program

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

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

请指导我如何解决该问题。

谢谢。

如果仅使用servlet容器(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提供程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM