我有一个标准的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 } }
然后加:
<listener> <description>ServletContextListener</description> <listener-class>MyListener</listener-class> </listener>
在你的web.xml中