我有一个在 Eclipse 中的 Tomcat 服务器上运行的 JSP 网页。该网站有一个 Java 后端,它通过 Servlet 与之通信。一切正常,但我希望有一个后台进程在运行——比如说,一个 Main 方法。此方法应在服务器启动时启动。
我需要这个的原因如下:假设网页有不同的用户登录,我想跟踪他们的用户名并对他们做一些事情——也许创建 session 来跟踪一些指标。
我意识到执行此操作的一种方法可能是在每次有人登录时检查我们的方法是否正在运行。像这样:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (/* Method is not initialized */)
/*call Method*/
我想知道是否有更好的方法来启动这个后台方法。
最佳答案
您可以在部署您的网络应用时开始您的流程。为此,您必须创建一个 ServletContextListener .
只需创建一个类:
public class YourClassName implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent arg0) {
run your background stuff
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
stop your background stuff
}
}
并在您的 web.xml 中定义它:
<listener>
<listener-class>
your class fully qualified name
</listener-class>
</listener>
如果您不想费心编写 XML 定义并且您正在运行 Java 6+,您还可以使用
注释您的类@WebListener
关于java - 在 Eclipse 中的 Tomcat 服务器上运行一个 jsp 网站 - 如何在服务器启动时运行 Main 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249095/