Лучший способ отложить доступ к статическим веб-страницам, пока службы не станут доступны с J2EE - PullRequest
4 голосов
/ 22 марта 2010

У меня есть J2EE-приложение, во главе которого стоит группа страниц GWT. Когда сервер запускается, возможно, что эти статические страницы будут доступны до того, как станут доступны службы, необходимые для реализации вызовов GWT RPC (база данных и т. Д.). Мне интересно, как лучше всего предотвратить доступ пользователей к этому статическому контенту до того, как эти службы станут доступными.

Для целей этого упражнения предположим, что где-то есть метод isInitialized(). Я доволен либо страницей с сообщением об ошибке, либо просто отказываюсь от подключения.

Ответы [ 2 ]

5 голосов
/ 22 марта 2010

Фильтр сервлетов (то есть реализация javax.servlet.Filter) будет очевидным выбором здесь. Он может обратиться к вашему isInitialized() методу и перенаправить / переслать на страницу «пока не доступно». url-pattern фильтра в web.xml будет выбран для того, чтобы перехватывать конкретные запросы, которые вы хотите защитить.

0 голосов
/ 22 марта 2010

Ваше приложение сгруппировано за балансировщиком нагрузки?Если это так, то ваша проблема заключается в том, что вы должны запретить распределителю нагрузки направлять трафик на любой экземпляр сервера, который не был полностью инициализирован.Вы можете создать сервлет AmIReady, который проверяет состояние сервера, а затем возвращает соответствующий код ответа (200 или 503?).Свяжите это с / checkstatus или чем-то другим, и заставьте свой балансировщик нагрузки использовать этот URL-адрес в качестве проверки работоспособности.

Если вы выполняете липкое распределение нагрузки, идея, предложенная @skaffman, вероятно, будет работать, если предположить, что вы действительно устанавливаете настройки кэша для файлов * no-cache.js в no-cache.Однако такой подход может привести к тому, что пользователь получит ответ об ошибке от инициализирующего сервера, когда хороший ответ мог быть получен с другого сервера в кластере (конечно, при условии, что вы сможете выполнить раунд- Развертывание роботов, чтобы избежать простоев, а также то, что ваши стратегии кэширования сеансов позволяют пользователям беспрепятственно перемещаться между серверами и т. д. и т. д.

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