update servlets part
This commit is contained in:
parent
1650111962
commit
e94672c262
|
@ -433,6 +433,7 @@
|
|||
+ [В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?](servlets.md#В-чем-заключаются-преимущества-технологии-сервлетов-над-cgi-common-gateway-interface)
|
||||
+ [Какова структура веб-проекта?](servlets.md#Какова-структура-веб-проекта)
|
||||
+ [Что такое _«контейнер сервлетов»_?](servlets.md#Что-такое-контейнер-сервлетов)
|
||||
+ [Зачем нужны сервера приложений, если есть контейнеры сервлетов?](servlets.md#Зачем-нужны-сервера-приложений-если-есть-контейнеры-сервлетов)
|
||||
+ [Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?](servlets.md#Как-контейнер-сервлетов-управляет-жизненным-циклом-сервлета-когда-и-какие-методы-вызываются)
|
||||
+ [Что такое _«дескриптор развертывания»_?](servlets.md#Что-такое-дескриптор-развертывания)
|
||||
+ [Какие действия необходимо проделать при создании сервлетов?](servlets.md#Какие-действия-необходимо-проделать-при-создании-сервлетов)
|
||||
|
|
41
servlets.md
41
servlets.md
|
@ -5,6 +5,7 @@
|
|||
+ [В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?](#В-чем-заключаются-преимущества-технологии-сервлетов-над-cgi-common-gateway-interface)
|
||||
+ [Какова структура веб-проекта?](#Какова-структура-веб-проекта)
|
||||
+ [Что такое _«контейнер сервлетов»_?](#Что-такое-контейнер-сервлетов)
|
||||
+ [Зачем нужны сервера приложений, если есть контейнеры сервлетов?](#Зачем-нужны-сервера-приложений-если-есть-контейнеры-сервлетов)
|
||||
+ [Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?](#Как-контейнер-сервлетов-управляет-жизненным-циклом-сервлета-когда-и-какие-методы-вызываются)
|
||||
+ [Что такое _«дескриптор развертывания»_?](#Что-такое-дескриптор-развертывания)
|
||||
+ [Какие действия необходимо проделать при создании сервлетов?](#Какие-действия-необходимо-проделать-при-создании-сервлетов)
|
||||
|
@ -159,12 +160,51 @@ __Контейнер сервлетов__ — программа, предста
|
|||
+ Apache Tomcat
|
||||
+ Jetty
|
||||
+ JBoss
|
||||
+ WildFly
|
||||
+ GlassFish
|
||||
+ IBM WebSphere
|
||||
+ Oracle Weblogic
|
||||
|
||||
[к оглавлению](#servlets-jsp-jstl)
|
||||
|
||||
## Зачем нужны сервера приложений, если есть контейнеры сервлетов?
|
||||
+ __Пулы соединений с БД__
|
||||
+ Возможность периодического тестирования доступности СУБД и обновления соединения в случае восстановления после сбоев
|
||||
+ Замена прав доступа при подключении
|
||||
+ Балансировка нагрузки между несколькими СУБД, определение доступность или недоступность того или иного узла
|
||||
+ Защита пула соединений от некорректного кода в приложении, которое по недосмотру не возвращает соединения, просто отбирая его после какого-то таймаута.
|
||||
+ __JMS__
|
||||
+ Доступность сервера очередей сообщений "из-коробки".
|
||||
+ Возможность кластеризации очередей, т.е. доступность построения распределенных очередей, расположенных сразу на нескольких серверах, что существенно увеличивает масштабируемость и доступность приложения
|
||||
+ Возможность миграции очередей - в случае падения одного из серверов, его очереди автоматически перемещаются на другой, сохраняя необработанные сообщения.
|
||||
+ В некоторых серверах приложений поддерживается _Unit-of-Order_ - гарантированный порядок обработки сообщений, удовлетворяющих некоторым критериям.
|
||||
+ __JTA__ Встроенная поддержка распределенных транзакций для обеспечения согласованности данных в разные СУБД или очереди.
|
||||
+ __Безопасность__
|
||||
+ Наличие множества провайдеров безопасности и аутентификации:
|
||||
+ во встроенном или внешнем _LDAP-сервере_
|
||||
+ в базе данных
|
||||
+ в различных _Internet-directory_ (специализированных приложениях для управления правами доступа)
|
||||
+ Доступность _Single-Sign-On_ (возможности разделения пользовательской сессии между приложениями) посредством _Security Assertion Markup Language (SAML) 1/2_ или _Simple and Protected Negotiate (SPNEGO)_ и _Kerberos_: один из серверов выступает в роли базы для хранения пользователей, все другие сервера при аутентификации пользователя обращаются к этой базе.
|
||||
+ Возможность авторизации посредством протокола _eXtensible Access Control Markup Language (XACML)_, позволяющего описывать довольно сложные политики (например, приложение доступно пользователю только в рабочее время).
|
||||
+ Кластеризация всего вышеперечисленного
|
||||
+ __Масштабируемость и высокая доступность__ Для контейнера сервлетов обычно так же возможно настроить кластеризацию, но она будет довольно примитивной, так как в случае его использования имееются следующие ограничения:
|
||||
+ Сложность передачи пользовательской сессии из одного _центра обработки данных (ЦоД)_ в другой через Интернет
|
||||
+ Отсутствие возможности эффективно настроить репликации сессий на большом (состоящем из 40-50 экземпляров серверов) кластере
|
||||
+ Невозможность обеспечения миграции экземпляров приложения на другой сервер
|
||||
+ Недоступность механизмов автоматического мониторинга и реакции на ошибки
|
||||
+ __Управляемость__
|
||||
+ Присутствие единого центра управления, т.н. _AdminServer_ и аналога _NodeManager_’а, обеспечивающего
|
||||
+ Возможность одновременного запуска нескольких экземпляров сервера
|
||||
+ Просмотр состояния запущенных экземпляров сервера, обработчиков той или иной очереди, на том или ином сервере, количества соединений с той или иной БД
|
||||
+ __Административный канал и развертывание в промышленном режиме__ Некоторые сервера приложений позволяют включить так называемый "административный канал" - отдельный порт, запросы по которому имеют приоритет.
|
||||
+ Просмотр состояния (выполняющихся транзакций, потоков, очередей) в случае недоступности ("зависания") сервера
|
||||
+ Обновление приложений "на-лету", без простоя:
|
||||
+ добавление на сервер новой версии приложения в "закрытом" режиме, пока пользователи продолжают работать со предыдущей
|
||||
+ тестирование корректности развертывания новой версии
|
||||
+ "скрытый" перевод на использование новой версии всех пользователей
|
||||
|
||||
[к оглавлению](#servlets-jsp-jstl)
|
||||
|
||||
## Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
|
||||
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
|
||||
|
||||
|
@ -1314,5 +1354,6 @@ Jsp-страница, по умолчанию, всегда создает се
|
|||
+ [java2ee.ru](http://www.java2ee.ru/servlets/)
|
||||
+ [Java-online](http://java-online.ru/jsp-questions.xhtml)
|
||||
+ [Codenet](http://www.codenet.ru/webmast/java/jsp.php)
|
||||
+ [JavaTalks Articles](https://articles.javatalks.ru/articles/24)
|
||||
|
||||
[Вопросы для собеседования](README.md)
|
||||
|
|
Loading…
Reference in New Issue