2016-01-28 2 views
0

Только начали изучать сервлеты и JSP, и я пытался, реализованными в соответствии асинхронных сервлет в соответствии с этим guideness: https://plumbr.eu/blog/java/how-to-use-asynchronous-servlets-to-improve-performanceServlet Асинхронных вопросов и ошибка

У меня есть два вопроса о предмете:

  1. Я Бесполезный Не понимаю, почему асинхронные сервлеты должны быть быстрее. Согласно его примеру, момент получения блока по потокам сервера вы получаете блок по потокам приложения.

  2. Я попытался реализовать свой пример, но когда я запускаю асинхронный сервлет, я получаю раздражающую ошибку HTTP Status 500. The server encountered an internal error that prevented it from fulfilling this request. Я понятия не имею, почему он не работает, я даже не уверен, как начать его отладку.

P.S. Я думал, что было бы проще просто пропустить здесь URL-адрес, потому что он почти такой же, как мой код. Но если вам, ребята, я тоже передам код.

ответ

1

Asynch Servlet (AS) не быстрее. Он имеет больше накладных расходов, чем обычный маршрут сервлетов. Его основная цель - улучшить использование потоков WebContainer (WC).

Существует ограниченное количество потоков, заданных в пуле потоков WC для обслуживания запросов. Когда запросы задерживаются слишком долго (например, ожидаются для генерации данных из базы данных) для завершения, а сервер приложений находится под нагрузкой, WC прекратит обслуживать любой новый запрос до тех пор, пока его поток не будет доступен (т. Е. Предыдущий запрос будет завершен, таким образом, освободите Нить WC).

Это то место, где AS поступает. Поэтому вместо ожидания AS может быть откручен на другой поток (потоки управления рабочей нагрузкой ...). Это позволяет завершить исходный сервлет и тем самым отпустить поток WC обратно в пул, чтобы обслуживать следующий запрос.