tomcat自动启动servlet

标签 tomcat

<分区>

我有一个标准的 GWT 应用程序,它当然在后端使用 Java servlet。此 servlet 部署在 Tomcat 和 Windows Server 上。

我知道这是违反规则/建议的,但我在这个 servlet 中有一个线程在 servlet 初始化时启动(servlet 的“init”方法)。线程是某种调度程序,其目的是在特定时间执行不同的数据库任务,完全独立于 GWT 应用程序/接口(interface)本身。

我需要的是在部署 war 时立即调用 servlet 的“init”方法。现在我一直在做的是,每次应用程序升级时,我将 war 放到正确的目录中,然后我必须“登录”到应用程序 GWT 应用程序,以便调用它的“init”方法。我希望在 war 更新后立即调用 servlet 的 init 方法,这样我就不必登录到 GWT 应用程序来执行此操作。

有什么想法吗?

最佳答案

你可以使用 servlet context listener .更具体地说,您可以在 contextInitialized 方法中启动您的线程:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
         // start the thread
    }

    public void contextDestroyed(ServletContextEvent sce) {
         // stop the thread
    }
}

然后添加:

<listener>
    <description>ServletContextListener</description>
    <listener-class>MyListener</listener-class>
</listener>

在你的 web.xml 中

关于tomcat自动启动servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/785769/

相关文章:

java - Maven + IntelliJ 项目设置重置

java - 在 Java 中创建可下载文件并存储在 Web 应用程序子目录中

java - 此 URL 不支持 HTTP 方法 GET - Tomcat

sql-server - 在同时运行的 Tomcat 服务器中的多个 war 文件之间共享 sqljdbc_auth.dll

tomcat - 当用户在 services.msc 中手动启动服务时,在启动 tomcat 服务之前运行批处理文件

java - Chrome 中的随机 ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION

tomcat - 如何访问特定IP地址上的Tomcat?

jakarta-ee - Glassfish V3、Jboss、SOA supporting、WSO2(embedded Tomcat)上的困惑

java - 在 eclipse 之外的 tomcat 上部署时重复注册 springSecurityFilterChain

java - 使用 Tomcat 部署动态 Web 项目