У меня есть Java веб-приложение с методом HTTP GET с этим кодом (внутри сервлета):
Certificate certificate = Observable.range(1, 10)
.delay(3, TimeUnit.SECONDS)
.filter(integer -> {
try {
LOG.info("AUTHORIZE ATTEMPTS: " + integer);
order.update();
} catch (AcmeException e) {
Exceptions.propagate(e);
}
return order.getStatus() == Status.VALID;
}).map(integer -> {
Certificate cert = order.getCertificate();
return cert;
}).toBlocking().first();
Проблема с этим в отношении NGINX Единица заключается в том, что при запуске в localhost, использующий плагин Jetty maven, все в порядке, однако при работе с NGINX Модуль с этой конфигурацией приложения:
{
"applications": {
"backend": {
"processes": 1,
"type": "java",
"options": [
"-Dlog_path=/var/log/backend-server-0-SNAPSHOT.log"
],
"webapp": "/var/www/backend-server-0-SNAPSHOT.war"
}
},
"listeners": {
"*:8080": {
"application": "backend"
}
}
}
Приведенный выше код Java блокирует все веб-приложение, то есть никакой другой HTTP-запрос может обрабатываться веб-приложением Java в течение 30 секунд, поскольку Observable.range(1, 10)
с задержкой в 3 секунды.
Интересно, почему NGINX Устройство ведет себя так. Ожидаемое поведение заключается в том, что веб-приложение все еще должно быть в состоянии обслуживать запросы.