1
1
Fork 0

update servlets part

This commit is contained in:
enhorse 2019-05-18 13:46:47 +06:00
parent 1650111962
commit e94672c262
2 changed files with 42 additions and 0 deletions

View File

@ -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#Какие-действия-необходимо-проделать-при-создании-сервлетов)

View File

@ -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)