我正在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) {
...
}
...
}
但我刚刚意识到我在构造函数中有太多的初始化工作,第一次调用需要几十秒才能响应。我可以想象这对第一个用户来说会很烦人。
有没有办法在服务器启动时和服务器开始监听之前初始化后端?
答案 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注释该类。)