0

我在以正确的方式解决这个问题时遇到了一点问题。

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

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

我的问题是:

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

4

2 回答 2

1

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

在 SevletcontexListener 你可以开始你的记录器

关联

public void contextInitialized(ServletContextEvent servletContextEvent) 
    {
          System.out.println("ServletContextListener started"); 
         //start thread here
    }
public void contextDestroyed(ServletContextEvent servletContextEvent) {
     //stop thread here
}
于 2012-11-08T07:23:50.330 回答
1

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

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

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

请参考以下答案,其中描述了如何从ServletContextListenerusing启动线程Executors,这是对线程的高级抽象。

希望这可以帮助...

于 2012-11-08T07:50:42.437 回答