我创建了一个servlet,每次启动它时,都需要运行几个代码线程以完成接受任何传入请求之前的操作。
这些线程最多可能需要几分钟才能完成,并且需要与数据库和文件系统进行大量交互。

我刚开始编写servlet,并且想知道插入此代码的最佳位置。即servlet init()方法是此代码的最佳位置(或适当位置)吗?

谢谢
西蒙

最佳答案

对您来说幸运的是,有一个用于此类初始化的类。在您的Web应用程序中,添加一个实现javax.servlet.ServletContextListener的类。在web.xml中,必须添加该侦听器类,以便Web容器可以运行它。

此时,您必须实现两种方法:contextInitialized和contextDestroyed。您可以确保它在接受请求之前在Web应用程序的开始处完全启动一次,并在结束时完全启动一次(假定没有严重错误)。

如果要等待这些线程完成,请启动它们,然后使用Thread.join等待它们完成,以便直到它们完成才开始接受请求。

有关如何实现ServletContextListener的更多信息,请参见see here是一个很好的示例。

关于java - 使用Tomcat在启动时将代码放置在Servlet中的何处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17051670/

10-16 07:13