Как развернуть проект сервера SQL в кластере

Вы должны закрыть поток, код становится более чистым, так как вы вызываете getOutputStream (), и поток не передается вам в качестве параметра, когда обычно вы просто используете его и не пытаетесь его закрыть. API-интерфейс Servlet не утверждает, что, если выходной поток может быть закрыт или не должен быть закрыт, в этом случае вы можете безопасно закрыть поток, любой контейнер там позаботится о закрытии потока, если он не был закрыт сервлетом.

Вот метод close () в Jetty, они закрывают поток, если он не закрыт.

public void close() throws IOException
    {
        if (_closed)
            return;

        if (!isIncluding() && !_generator.isCommitted())
            commitResponse(HttpGenerator.LAST);
        else
            flushResponse();

        super.close();
    }

Также как разработчик фильтра вы не должны предполагать, что OutputStream не закрывается, вы всегда должны передавать другой OutputStream, если хотите изменить содержимое после того, как сервлет выполнил свою работу.

EDIT: я всегда закрываю поток, и у меня не было никаких проблем с Tomcat / Jetty. Я не думаю, что у вас возникнут проблемы с контейнером, старым или новым.

0
задан Hugh Jones 19 March 2019 в 15:42
поделиться