HttpURLConnection CLOSE_WAIT в случае плохого ответа - PullRequest
0 голосов
/ 22 ноября 2018

Я видел В нескольких ответах здесь, чтобы повторно использовать соединение, мне нужно было закрыть входной поток и выходной поток.Прежде чем закрыть потоки, я видел слишком много соединений CLOSE_WAIT.Но теперь, в случае базового ответа (например, файл 404 не найден), я обрабатываю ответ таким образом

public static void handleIOError(URLConnection conn)
{
    InputStream es = null;
    HttpURLConnection urlConn = null;

    if (conn instanceof HttpURLConnection)
    {
        urlConn = (HttpURLConnection)conn;
        es = urlConn.getErrorStream();

    }

    if (es != null)
    {
        try
        {
            while (es.read() > -1) {}
        }
        catch (IOException e)
        {
            logger.error("Unable to close input stream", e);
        }
        finally
        {
            IOUtils.closeQuietly(es);
        }
    }
}

, поэтому я закрываю inputtream, но, тем не менее, у меня есть несколько CLOSE_WAIT соединения.Я предполагаю, что я не закрыл поток сокетов, но какой?Как вы, возможно, знаете, в случае ошибки я не могу сделать urlConn.getInputStream()

мой сервер - tomcat 8.

Любая идея, как решить утечку сокета?

...