我有一个 Web 应用程序,它包含一个在 Tomcat 服务启动时由 Servlet 启动的轮询过程(无限 while 循环)。
<load-on-startup>0</load-on-startup>
效果很好。
如果这是一个 Unix 进程,那么我可以使用以下命令在命令行上检查它:
ps -ef | grep <myProcess>
有什么(简单的)东西可以在 Servlet 中用来监视我的 Polling 进程的状态吗?
编辑
澄清一下,我真正想看到的是进程仍在运行并且没有停止。
最佳答案
恕我直言,您不应为该用例使用 Servlet,而应使用 ServletContextListener。在其 contextInitialized(ServletContextEvent sce)
中,监听器应该:
- 启动轮询服务线程
- 在 ServletContext 属性中放入一个对象,该对象包含来自轮询线程(并具有同步机制)的状态(上次操作日期、每个操作的数量...)
然后,监听器可以在其 contextDestroyed(ServletContextEvent sce)
中停止轮询线程,并且任何 servlet(包括 JSP)都可以从 ServletContext 获取轮询线程的状态。
关于用于启动和监视轮询过程的 Java Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116748/