Я видел В нескольких ответах здесь, чтобы повторно использовать соединение, мне нужно было закрыть входной поток и выходной поток.Прежде чем закрыть потоки, я видел слишком много соединений 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.
Любая идея, как решить утечку сокета?