I'm facing almost exactly the same problem, only in my case the response is also a
Java Object containing a pdf as byte[] or an Exception Object in case of a server side Exception.
Some users have the same IOException as in your post, no matter when and how many times they try.
At the server side, I have a ProtocolException that I do not understand:
java.net.ProtocolException: EOF after reading only: '98304' of: '197686' promised bytes, out of which at least: '512' were already buffered
at weblogic.servlet.internal.PostInputStream.complain(PostInputStream.java:91)
at weblogic.servlet.internal.PostInputStream.read(PostInputStream.java:172)
at weblogic.servlet.internal.ServletInputStreamImpl.read(ServletInputStreamImpl.java:180)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2140)
at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2539)
at java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2569)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1584)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1271)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1835)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1759)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:322)
at my.own.package.SendAction.execute(SendAction.java:123)
The number of bytes in the error message are always the same if the user tries multiple times. Has any one seen this Exception before? Can anyone explain me what it means? I guess that a TCP packet is lost and that server gives up trying to read the incomming request, but I'm not sure at all. Especially not as this happens for a minority of users every time again, and always at the same byte.
A custom Exception indicating a transfer error is stored in a JavaObject which is returned to my applet.
From the applet logging, I can see that the user has been sending for 4 minutes and 36 seconds. I have the exact same stacktrace in my applet (on the HttpURLConnection.getInputStream()). The timeout on the servers is 5 minutes;
Until now, I have never succeeded to reproduce the problem, even if I send the same data the user send.
Did any one find an explanation and/or a solution for this problem?
This is a real killer.