GWT:如何在服务器开始监听之前初始化后端?

时间:2015-05-22 05:11:57

标签: gwt web-applications server

我正在GWT中编写Web应用程序。目前我唯一的服务器端逻辑是包含在扩展RemoteServiceServlet的类中的一些RPC调用。这个类的结构如下所示:

public class ProjectActionsImpl extends RemoteServiceServlet
                                implements ProjectActions {
    public ProjectActionsImpl() {
        ... *lots* of preparations ...
    }

    public String action1(String request) {
        ...
    }

    public String action2(String request) {
        ...
    }
    ...
}

但我刚刚意识到我在构造函数中有太多的初始化工作,第一次调用需要几十秒才能响应。我可以想象这对第一个用户来说会很烦人。

有没有办法在服务器启动时和服务器开始监听之前初始化后端?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用ServletContextListener。检查一下: http://www.mkyong.com/servlet/what-is-listener-servletcontextlistener-example/。 简而言之,您定义了一个在Web应用程序启动时触发的上下文侦听器,您可以在其中初始化服务器端逻辑。这是一个例子:

public class MyServletContextListener implements ServletContextListener{

  @Override
  public void contextInitialized(ServletContextEvent ctxEvt) {
        System.out.println("this runs at web app startup"); 
  }

  @Override
  public void contextDestroyed(ServletContextEvent ctxEvt) {
    System.out.println("this runs when you stop the app");
  }

}

然后使用< listener>在web.xml中注册它。和< listener-class>标签(如果使用servlet规范v.3,则可以使用@WebListener注释该类。)