2013-09-27 41 views
0

我必須從JAVA控制檯程序向APACHE Tomcat 7.0.42服務器上的servlet發送消息,並使用ActiveMQ 5.8.0發送確認消息返回到程序並繼續相同的事情,直到服務器脫機。JMS - ActiveMQ - Servlet(遠程服務器(Apache-ActiveMQ))和控制檯Java程序

我對JMS是全新的,我只知道servlets,jsp,listeners,沒有框架。
我有:Eclipse-Kepler和JDK1.7,無法在Apache上配置ActiveMQ。
我看了很多博客,但似乎沒有任何工作

請指導我如何解決這個問題。

謝謝你。

+0

「直到在線」或「直到離線」?你的問題太廣泛了:你到目前爲止嘗試過什麼? – Beryllium

+0

謝謝Beyllium,我的意思是,直到我的服務器下線。 直到現在我已經做了2個程序(在控制檯上)1發送消息到隊列和其他從它讀取。我想要像listner這樣的東西,如果它在服務器端是活動的,那麼它會發送回復到每一條消息... –

回答

0

如果您使用的是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提供程序。

+0

謝謝鈹...會試試看,並將重新發布,如果面臨任何問題! 我有一個限制,我只能使用tomcat,這就是爲什麼... –