我希望显示默认的自定义页面,直到我的服务器完全启动。
问题陈述:我在服务器启动时做的设置很少,因此服务器启动需要很长时间。所以在此期间服务器统计信息如果某个用户点击主页url,那么他应该会看到一些显示服务器正在启动的默认页面...这个... ...
现在问题是如果服务器没有完全启动,我的应用程序上下文都没有完全加载,并且命中的响应是“中止”,这不是HTTP响应,所以我如何能够捕获这个响应并显示一些错误页面。
服务器可以是jetty,tomcat任何
答案 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");
}
}
}