Estoy viendo esta excepción:
java.net.SocketTimeoutException: tiempo de espera al intentar leer datos del socket
Aquí está el código que lo genera:
public static String extractBody(HttpServletRequest request) { StringBuffer sb = new StringBuffer(); String line = null; try { //BufferedReader reader = request.getReader(); BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); while ((line = reader.readLine()) != null) { sb.append(line); } } catch (Exception e) { logger.fatal("Failed to read from socket with content-length: {}", request.getHeader("Content-Length")); e.printStackTrace(); } return sb.toString(); }Cuando sucede, la longitud del contenido que se escribe no es cero. Es como esto
Failed to read from socket with content-length: 279645¿Qué está causando este tiempo de espera? ¿Es que el cliente dejó el socket sin cerrar? ¿Hay algo más que me estoy perdiendo? ¿Hay alguna forma diferente en la que deba leer los datos del cuerpo de una solicitud de servlet? La mayoría de las solicitudes funcionan bien, solo veo este error a veces, pero puede ser una determinada versión o plataforma del cliente o algo así.
El encabezado de longitud del contenido no coincidía con la longitud real del contenido y estaba esperando más datos.