【问题标题】:GWT: How do I initialize the back-end before the server starts listening? [duplicate]GWT:如何在服务器开始监听之前初始化后端? [复制]
【发布时间】:2015-05-22 05:11:57
【问题描述】:

我正在用 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) {
        ...
    }
    ...
}

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

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

【问题讨论】:

    标签: gwt web-applications server


    【解决方案1】:

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

    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");
      }
    
    }
    

    然后你在 web.xml 中注册它,使用 和 标签(如果你使用 servlet spec v.3,你可以用 @WebListener 来注释类)。

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 2017-08-17
      • 2015-12-20
      • 2023-03-18
      • 2014-05-24
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多