我有一个标准的GWT应用程序,它当然在后端使用Java servlet.此servlet部署在Tomcat和Windows Server上.
我知道它违反了规则/建议,但我在这个servlet中有一个线程,它在servlet初始化时启动(servlet的"init"方法).该线程是各种调度程序,其目的是在某些时间执行不同的数据库任务,完全独立于GWT应用程序/接口本身.
我需要的是在部署战争后立即调用servlet的"init"方法.现在我一直在做的是,每当升级到应用程序时,我就把战争放到正确的目录中,然后我必须"登录"到应用程序GWT应用程序,以便调用它的"init"方法.我希望在战争更新后立即调用servlet的init方法,这样我就不必登录GWT应用程序来执行此操作.
有任何想法吗?
您可以使用servlet上下文侦听器.更具体地说,您可以在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 } }
然后加:
ServletContextListener MyListener
在你的web.xml中