显示服务器启动前的默认页面

时间:2013-12-04 15:26:38

标签: java tomcat servlets spring-mvc jetty

我希望显示默认的自定义页面,直到我的服务器完全启动。

问题陈述:我在服务器启动时做的设置很少,因此服务器启动需要很长时间。所以在此期间服务器统计信息如果某个用户点击主页url,那么他应该会看到一些显示服务器正在启动的默认页面...这个... ...

现在问题是如果服务器没有完全启动,我的应用程序上下文都没有完全加载,并且命中的响应是“中止”,这不是HTTP响应,所以我如何能够捕获这个响应并显示一些错误页面。

服务器可以是jetty,tomcat任何

1 个答案:

答案 0 :(得分:1)

一个快速而又肮脏的例子:

public class DeferringServlet extends HttpServlet {

  private static final Logger logger = Logger.getLogger(DeferringServlet.class);

  private MyApp myApp;
  private Thread appInitializerThread;

  public void init() {
    myApp = new MyApp();
    appInitializerThread = new Thread(new Runnable() {
      public void run() {
        myApp.init();
      }
    });
    appInitializerThread.start();
  }

  protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
    if(myApp.isInitialized()) {
      myApp.doGet(req, resp);
    } else {
      myApp.setStatus(503); //Service unavailable
      myApp.getWriter.println("Please wait.  App is loading");
    }
  }

  public void destroy() {
    if(appInitializerThread.isAlive()) {
      appInitializerThread.interrupt();
    }
    try {
      appInitializerThread.join();
    } catch (InterruptedException ex) {
      logger.warn("Interrupted before app initializer could finish");
    }
  }

}