Я использую веб-профиль Glassfish 3 и не могу заставить работников http одновременно выполнять запросы к сервлету.
Вот как я заметил проблему. Я сделал очень простой сервлет, который записывает текущее имя потока в стандартный вывод и спит в течение 10 секунд:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep(10000); // 10 sec
}
catch (InterruptedException ex) {
}
}
И когда я запускаю несколько одновременных запросов, я ясно вижу в журналах, что запросы выполняются последовательно (одна трассировка каждые 10 секунд).
INFO: http-thread-pool-8080-(2)
(10 seconds later...)
INFO: http-thread-pool-8080-(1)
(10 seconds later...)
INFO: http-thread-pool-8080-(2)
и т.д.
Все мои настройки GF не затронуты - это готовая конфигурация (пул потоков по умолчанию составляет 2 потока, минимум 5, если я правильно помню).
Я действительно не понимаю, почему sleep () блокирует все остальные рабочие потоки. Любая идея будет принята с благодарностью!