启动大型Web应用程序时的空白页面

时间:2009-09-18 16:48:10

标签: java tomcat

我有一个相当大的基于战争的网络应用程序。当我启动它时,即使应用程序没有启动,Tomcat也会立即允许连接。因此,用户会在加载应用之前获得空白页。

我看到一些网络应用,在应用加载时,他们会显示“网络应用正在启动,请稍候”页面。有没有一种简单的技术让Java应用程序这样做?

2 个答案:

答案 0 :(得分:1)

我怀疑你的servlet在init()方法中进行了大量的初始化。你能将它卸载到一个单独的线程上,并记录该线程何时完成?您可以提供servlet filter来检查该线程的进度并中断请求(带有“请稍候”)消息,直到初始化线程完成。

答案 1 :(得分:1)

当您处理复杂的系统时,很难避免在初始化或重新加载阶段等待很长时间。你必须从各个方面解决这个问题。

以下是我自己的一些建议,

  1. 不要执行按需初始化,例如在第一次请求时连接到数据库。在服务器启动时做好一切。
  2. 没有灰色状态。它要么正在升级,要么正在初始化。如果服务器部分工作,请将其杀死,以便负载均衡器可以完成其工作。如果状态不是UP,只需发送“请等待”。
  3. 如果可以,请在ContextListener中进行初始化工作。 Servlet.init()只应用于特定于单个servlet的内容。
  4. Tomcat在启动期间将请求排队。因此,您需要在不同的线程中执行长初始化任务,以便Tomcat可以将上下文标记为UP,并且您可以发送“请稍候”消息。我们还减少了连接器队列的大小。
  5. 当没有服务器启动或全部太忙时,需要将负载均衡器/交换机配置为静态“请稍候”页面。