|
5 | 5 | + [В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?](#В-чем-заключаются-преимущества-технологии-сервлетов-над-cgi-common-gateway-interface) |
6 | 6 | + [Какова структура веб-проекта?](#Какова-структура-веб-проекта) |
7 | 7 | + [Что такое _«контейнер сервлетов»_?](#Что-такое-контейнер-сервлетов) |
| 8 | ++ [Зачем нужны сервера приложений, если есть контейнеры сервлетов?](#Зачем-нужны-сервера-приложений-если-есть-контейнеры-сервлетов) |
8 | 9 | + [Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?](#Как-контейнер-сервлетов-управляет-жизненным-циклом-сервлета-когда-и-какие-методы-вызываются) |
9 | 10 | + [Что такое _«дескриптор развертывания»_?](#Что-такое-дескриптор-развертывания) |
10 | 11 | + [Какие действия необходимо проделать при создании сервлетов?](#Какие-действия-необходимо-проделать-при-создании-сервлетов) |
@@ -159,12 +160,51 @@ __Контейнер сервлетов__ — программа, предста |
159 | 160 | + Apache Tomcat |
160 | 161 | + Jetty |
161 | 162 | + JBoss |
| 163 | ++ WildFly |
162 | 164 | + GlassFish |
163 | 165 | + IBM WebSphere |
164 | 166 | + Oracle Weblogic |
165 | 167 |
|
166 | 168 | [к оглавлению](#servlets-jsp-jstl) |
167 | 169 |
|
| 170 | +## Зачем нужны сервера приложений, если есть контейнеры сервлетов? |
| 171 | ++ __Пулы соединений с БД__ |
| 172 | + + Возможность периодического тестирования доступности СУБД и обновления соединения в случае восстановления после сбоев |
| 173 | + + Замена прав доступа при подключении |
| 174 | + + Балансировка нагрузки между несколькими СУБД, определение доступность или недоступность того или иного узла |
| 175 | + + Защита пула соединений от некорректного кода в приложении, которое по недосмотру не возвращает соединения, просто отбирая его после какого-то таймаута. |
| 176 | ++ __JMS__ |
| 177 | + + Доступность сервера очередей сообщений "из-коробки". |
| 178 | + + Возможность кластеризации очередей, т.е. доступность построения распределенных очередей, расположенных сразу на нескольких серверах, что существенно увеличивает масштабируемость и доступность приложения |
| 179 | + + Возможность миграции очередей - в случае падения одного из серверов, его очереди автоматически перемещаются на другой, сохраняя необработанные сообщения. |
| 180 | + + В некоторых серверах приложений поддерживается _Unit-of-Order_ - гарантированный порядок обработки сообщений, удовлетворяющих некоторым критериям. |
| 181 | ++ __JTA__ Встроенная поддержка распределенных транзакций для обеспечения согласованности данных в разные СУБД или очереди. |
| 182 | ++ __Безопасность__ |
| 183 | + + Наличие множества провайдеров безопасности и аутентификации: |
| 184 | + + во встроенном или внешнем _LDAP-сервере_ |
| 185 | + + в базе данных |
| 186 | + + в различных _Internet-directory_ (специализированных приложениях для управления правами доступа) |
| 187 | + + Доступность _Single-Sign-On_ (возможности разделения пользовательской сессии между приложениями) посредством _Security Assertion Markup Language (SAML) 1/2_ или _Simple and Protected Negotiate (SPNEGO)_ и _Kerberos_: один из серверов выступает в роли базы для хранения пользователей, все другие сервера при аутентификации пользователя обращаются к этой базе. |
| 188 | + + Возможность авторизации посредством протокола _eXtensible Access Control Markup Language (XACML)_, позволяющего описывать довольно сложные политики (например, приложение доступно пользователю только в рабочее время). |
| 189 | + + Кластеризация всего вышеперечисленного |
| 190 | ++ __Масштабируемость и высокая доступность__ Для контейнера сервлетов обычно так же возможно настроить кластеризацию, но она будет довольно примитивной, так как в случае его использования имееются следующие ограничения: |
| 191 | + + Сложность передачи пользовательской сессии из одного _центра обработки данных (ЦоД)_ в другой через Интернет |
| 192 | + + Отсутствие возможности эффективно настроить репликации сессий на большом (состоящем из 40-50 экземпляров серверов) кластере |
| 193 | + + Невозможность обеспечения миграции экземпляров приложения на другой сервер |
| 194 | + + Недоступность механизмов автоматического мониторинга и реакции на ошибки |
| 195 | ++ __Управляемость__ |
| 196 | + + Присутствие единого центра управления, т.н. _AdminServer_ и аналога _NodeManager_’а, обеспечивающего |
| 197 | + + Возможность одновременного запуска нескольких экземпляров сервера |
| 198 | + + Просмотр состояния запущенных экземпляров сервера, обработчиков той или иной очереди, на том или ином сервере, количества соединений с той или иной БД |
| 199 | ++ __Административный канал и развертывание в промышленном режиме__ Некоторые сервера приложений позволяют включить так называемый "административный канал" - отдельный порт, запросы по которому имеют приоритет. |
| 200 | + + Просмотр состояния (выполняющихся транзакций, потоков, очередей) в случае недоступности ("зависания") сервера |
| 201 | + + Обновление приложений "на-лету", без простоя: |
| 202 | + + добавление на сервер новой версии приложения в "закрытом" режиме, пока пользователи продолжают работать со предыдущей |
| 203 | + + тестирование корректности развертывания новой версии |
| 204 | + + "скрытый" перевод на использование новой версии всех пользователей |
| 205 | + |
| 206 | +[к оглавлению](#servlets-jsp-jstl) |
| 207 | + |
168 | 208 | ## Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются? |
169 | 209 | Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета: |
170 | 210 |
|
@@ -1314,5 +1354,6 @@ Jsp-страница, по умолчанию, всегда создает се |
1314 | 1354 | + [java2ee.ru](http://www.java2ee.ru/servlets/) |
1315 | 1355 | + [Java-online](http://java-online.ru/jsp-questions.xhtml) |
1316 | 1356 | + [Codenet](http://www.codenet.ru/webmast/java/jsp.php) |
| 1357 | ++ [JavaTalks Articles](https://articles.javatalks.ru/articles/24) |
1317 | 1358 |
|
1318 | 1359 | [Вопросы для собеседования](README.md) |
0 commit comments