0

我有一个带有 HTTP GET 方法的 Java Web 应用程序,其中包含以下代码(在 servlet 内):

        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 单元相关的问题是,当使用 Jetty maven 插件在 localhost 中运行时,没有任何问题,但是当使用此应用程序配置与 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 代码阻塞了整个 Web 应用程序,这意味着 Java Web 应用程序在 30 秒的持续时间内不能处理任何其他 HTTP 请求,因为 Observable.range(1, 10)有 3 秒的延迟。

我想知道为什么 NGINX 单元会这样。预期的行为是 Web 应用程序应该仍然能够处理请求。

4

0 回答 0