Tengo una aplicación con arquitectura de servidor de cliente. El cliente utiliza Java Web Start con Java Swing/AWT y el sert usa el servidor HTTP/Servlet con Tomcat. La comunicación se realiza a partir de la serialización de objetos, crea un ObjectOutput serializa una matriz de bytes y la envía al servidor , respectivamente llamada ObjectInputStream y deserializa.java.net.SocketTimeoutException: tiempo de espera agotado
La aplicación sigue comunicando correctamente a un cierto tiempo de concurrencia donde comienza a mostrar el error "Tiempo de espera de lectura de SocketException". El error ocurre cuando el servidor invoca el método ObjectInputStream.getObject() en mi método servlet doPost.
El tomcat será lento y los errores comenzarán a disminuir el tiempo de respuesta del servidor hasta el momento del bloqueo donde debo reiniciar el servidor y después de que todo funcione.
¿Alguien ha tenido este problema?
Código Cliente
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
ObjectOutputStream oss = new ObjectOutputStream(os);
oss.writeUTF("protocol header sample");
oss.writeObject(_parameters);
oss.flush();
oss.close();
código del servidor
ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();
parameters = input.readObject();
input.readObject() es donde el error es
¿Podría publicar algún código? – Enrique
¿Es un parámetro de tcp linux? Al igual que el tamaño de la memoria intermedia, max abrir archivos u otros? –
¿La cantidad de tiempo que pasa antes de SocketException es de 20 minutos o más? (si recuerdo la cantidad estándar de tiempo que esperará un socket tcp/ip antes de que se agote el tiempo si no hay actividad de conexión)? Después de todo, la excepción le dice "tiempo de espera de lectura", ¿podría tener esto algo que ver con la naturaleza asincrónica de la web? – Wintermut3