我有一个标准的 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 中