2014-09-30 48 views
0

我有一個Web應用程序,它包含一個輪詢過程(無限循環),當Tomcat服務啓動時由Servlet啓動。Java Servlet啓動和監控輪詢過程

<load-on-startup>0</load-on-startup> 

這工作正常。

如果這是一個Unix進程,然後我可以檢查它使用命令行:

ps -ef | grep <myProcess> 

有什麼(簡單),可以在Servlet被用來監視我的投票過程的狀態?

編輯

爲了澄清,我真正希望看到的是,這一進程仍在運行,並且一直沒有停止過。

+0

您也可以從Java執行命令「ps -ef | grep 」。 – icza 2014-09-30 09:14:58

+1

使您的servlet'doGet'方法返回有關您的工作線程的一些重要統計信息。你可能會檢查你的線程活着狀態;或者你的線程在每次喚醒時可能會更新一些屬性。 – 2014-09-30 09:22:09

+0

謝謝陀螺儀。我自己已經考慮過這樣的事情,可能會順着這條路走下去。 – thonnor 2014-09-30 10:36:24

回答

1

恕我直言,你不應該爲該用例使用Servlet,而應該使用ServletContextListener。在其contextInitialized(ServletContextEvent sce),聽者應:

  • 啓動輪詢服務線程
  • 裝入一個ServletContext屬性包含來自輪詢線程狀態(最後一次操作日期,每個操作數...)的對象(和具有同步mechanizme)

然後,聽衆可以在其contextDestroyed(ServletContextEvent sce)停止輪詢線程,和任何Servlet(包括JSP)可以得到從ServletContext輪詢線程的狀態。

+0

謝謝Serge, 我會仔細研究一下,看看我能找到/想出什麼。你有沒有一個例子或鏈接? – thonnor 2014-10-01 15:29:15

+0

一個更新 - 我今天完成了我的WebListener代碼(很好地啓動它並使其工作)。再次感謝您的幫助Serge – thonnor 2014-10-15 15:57:55