通过Servlet从运行Java Thread获取信息

时间:2012-11-08 07:20:03

标签: java servlets

我有一点问题,以正确的方式解决这个问题。

我有一个Java应用程序使用线程连续读取日志文件。当该应用程序仍在读取日志文件时,客户端应该能够通过java servlet查询当前状态(即在日志文件中找到某个键​​)。

我当前的问题是我在使用servlet的doGet-Method获取该状态时遇到问题。运行线程的WHile应该改变一个布尔变量。

我的问题是:

当我在Tomcat上部署Servlet时,如何让日志读取器线程开始运行。在空闲模式下,日志读取器正在侦听文件夹中的新文件,并在它们出现后开始读取它们吗?

2 个答案:

答案 0 :(得分:1)

请查看以下链接,您可以使用SevletcontexListener

在SevletcontexListener中,您可以启动记录器

Link

public void contextInitialized(ServletContextEvent servletContextEvent) 
    {
          System.out.println("ServletContextListener started"); 
         //start thread here
    }
public void contextDestroyed(ServletContextEvent servletContextEvent) {
     //stop thread here
}

答案 1 :(得分:1)

  

我当前的问题是我在使用servlet的doGet-Method获取该状态时遇到问题。运行线程的WHile应该改变一个布尔变量。

这可能是因为非线程安全布尔值的并发更新。有关此主题的更多详细信息,请阅读以下Java Concurrency

教程
  

当我在Tomcat上部署Servlet时,如何让日志读取器线程开始运行。在空闲模式下,日志读取器正在侦听文件夹中的新文件,并在它们出现后开始读取它们吗?

请参阅following answer,其中描述了如何使用ServletContextListenerExecutors启动线程,这是线程的高级抽象。

希望这会有所帮助......