2014-09-30 50 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