Пустая страница при загрузке большого веб-приложения - PullRequest
2 голосов
/ 18 сентября 2009

У меня есть довольно большое военное веб-приложение. Когда я загружаю его, Tomcat немедленно разрешает соединения, даже если приложение не загружается. Из-за этого пользователи получают пустую страницу, пока приложение не загружено.

Я видел некоторые веб-приложения, на которых отображается страница «веб-приложение запускается, пожалуйста, подождите» во время загрузки приложения. Есть ли простой способ для Java-приложений сделать это?

Ответы [ 2 ]

1 голос
/ 19 сентября 2009

Когда вы работаете в сложной системе, очень трудно избежать длительного ожидания на этапе инициализации или перезагрузки. Вы должны решить эту проблему со всех сторон.

Вот несколько советов из моего собственного опыта,

  1. Не выполнять инициализацию по требованию, например, подключение к базе данных по первому запросу. Делайте все сразу при старте.
  2. Нет серого статуса. Это или вверх или инициализации. Убейте сервер, если он частично работает, чтобы балансировщик нагрузки мог выполнить свою работу. Просто отправьте «пожалуйста, подождите», если статус не UP.
  3. Выполните инициализацию в ContextListener, если можете. Servlet.init () должен использоваться только для вещей, специфичных для отдельного сервлета.
  4. Tomcat ставит в очередь запросы во время запуска. Поэтому вам нужно выполнить длинные задачи инициализации в другом потоке, чтобы Tomcat мог пометить контекст как UP, и вы можете отправить это сообщение «Пожалуйста, подождите». Мы также уменьшаем размер очереди соединителя.
  5. Балансировщик нагрузки / коммутатор должны быть настроены на статическую страницу «Пожалуйста, подождите», когда сервер не работает или все слишком заняты.
1 голос
/ 18 сентября 2009

Я подозреваю, что ваши сервлеты выполняют большую инициализацию в методе init(). Можете ли вы переложить это на отдельный поток и записать, когда этот поток завершится? Вы можете предоставить фильтр сервлетов , который проверяет ход выполнения этого потока и отправляет запросы на прерывание (с «пожалуйста, подождите») до завершения потока инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...