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

JMS-ActiveMQ-Servlet(远程服务器(apacheactivemq))和控制台Java程序,java,tomcat,servlets,jms,activemq,Java,Tomcat,Servlets,Jms,Activemq,我必须使用ActiveMQ 5.8.0从JAVA控制台程序向ApacheTomcat 7.0.42服务器上的servlet发送一条消息,并将确认消息发送回程序,然后继续执行相同的操作,直到服务器脱机 我对JMS一无所知,我只知道servlet、jsp、监听器,也就是说,没有框架。 我有:EclipseKepler和JDK1.7,无法在Apache上配置ActiveMQ。 我读了很多博客,但似乎什么都不管用 请指导我如何处理这个问题 谢谢。如果您仅使用servlet容器(Tomcat),则可以创建

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

我对JMS一无所知,我只知道servlet、jsp、监听器,也就是说,没有框架。
我有:EclipseKepler和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
中,只需读取传入队列,然后在传出队列上发送内容(我建议使用两个不同的队列进行乒乓)。必须取消计时器,否则该线程将在取消部署和重新部署后继续生存


注意:如果您使用的是应用程序服务器(例如JBoss),那么可以使用消息驱动bean(MDB)来实现。更加优雅简洁,线程由应用服务器管理。使用JBoss这样的应用服务器的额外好处是集成了HornetQ JMS提供程序。

“直到联机”还是“直到脱机”?你的问题太宽泛了:到目前为止你尝试了什么?谢谢你,贝利姆,我的意思是直到我的服务器离线。到目前为止,我已经制作了两个程序(都在控制台上),一个用来向队列发送消息,另一个用来读取消息。我想要类似listner的东西,如果它在服务器端是活动的,那么它会发送回复到收到的每封邮件…谢谢你铍…会尝试它,如果遇到任何问题,会重新发布!我有一个限制,我只能使用tomcat这就是为什么。。。