Ho un'applicazione con architettura client server. Il client utilizza Java Web Start con Java Swing/AWT e il sert utilizza il server/servlet HTTP con Tomcat. La comunicazione viene effettuata dalla serializzazione di oggetti, crea un oggetto serializza una matrice di byte e invia al server rispettivamente chiamato ObjectInputStream e deserializza.java.net.SocketTimeoutException: lettura scaduta
L'applicazione segue la comunicazione corretta a un determinato tempo di concorrenza in cui inizia a mostrare l'errore "Timeout lettura SocketException". L'erro si verifica quando il server richiama il metodo ObjectInputStream.getObject() nel mio metodo doPost servlet.
Il tomcat arriverà lentamente e gli errori inizieranno a diminuire il tempo di risposta del server fino al tempo di arresto in cui devo riavviare il server e dopo che tutto funziona.
Qualcuno ha superato questo problema?
Codice 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();
Codice Server
ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();
parameters = input.readObject();
input.readObject() è dove l'errore è
Potresti postare del codice? – Enrique
È un parametro tcp linux? Come la dimensione del mem del buffer, i file aperti massimi o altro? –
La quantità di tempo che trascorre prima di SocketException 20 minuti o più? (Se richiamo la quantità di tempo standard che un socket tcp/ip aspetterà prima che scada se non ci sono attività di connessione)? Dopo che tutta l'eccezione sta dicendo "timeout di lettura" potrebbe anche avere qualcosa a che fare con la natura asincrona del web? – Wintermut3