Java 显示默认页面,直到服务器启动
我想显示一个默认的自定义页面,直到我的服务器完全启动 问题陈述:我在服务器启动时只做了一些设置工作,因此服务器启动需要很长时间。所以在此期间,如果有用户点击了主页url,服务器会统计数据,所以他会看到一些默认页面,显示服务器正在启动..等等 现在的问题是,如果服务器没有完全启动,我的应用程序上下文也没有完全加载,并且对命中的响应是“中止的”,这不是HTTP响应,那么我如何捕获该响应并显示一些错误页面呢Java 显示默认页面,直到服务器启动,java,tomcat,servlets,spring-mvc,jetty,Java,Tomcat,Servlets,Spring Mvc,Jetty,我想显示一个默认的自定义页面,直到我的服务器完全启动 问题陈述:我在服务器启动时只做了一些设置工作,因此服务器启动需要很长时间。所以在此期间,如果有用户点击了主页url,服务器会统计数据,所以他会看到一些默认页面,显示服务器正在启动..等等 现在的问题是,如果服务器没有完全启动,我的应用程序上下文也没有完全加载,并且对命中的响应是“中止的”,这不是HTTP响应,那么我如何捕获该响应并显示一些错误页面呢 服务器可以是jetty、tomcat any一个快速而肮脏的示例: public class
服务器可以是jetty、tomcat any一个快速而肮脏的示例:
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");
}
}
}
如果服务器尚未完全初始化,它将无法处理请求。是的,正确..但是有没有办法在服务器启动之前显示一些默认页面…当然有。例如,Artifactory就是这样做的。但是,您必须将长的设置代码从servlet初始化中移出,并转移到其他后台工作线程中。servlet初始化应该只是启动工作线程。然后,您应该有一个servlet,用于检查应用程序是否已初始化并做出适当响应。