I am inserting a serializable object obtained from de-marshalling an xml. For inserting the object, I use the below methods namely insertPOJOInBackend(). However, while retrieving the object using the method readPOJOFromBackend(), I am getting a EOFException. I am struggling with this exception for the past week. A little help will be highly appreciated.
insertPOJOInBackend(String key, String url, Serializable Object){
//obtained connection object
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new
BufferedOutputStream(connection.getOutputStream()));
objectOutputStream.writeObject(serializableObject);
objectOutputStream.close();
BufferedReader rd = null;
StringBuilder sb = null;
String line = null;
rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
sb = new StringBuilder();
while ((line = rd.readLine()) != null) {
sb.append(line);
}
}
readPOJOFromBackend() {
HttpsURLConnection connection = null;
try
{
//obtained connection object
ObjectInputStream objectInputStream = new ObjectInputStream(new
BufferedInputStream(connection.getInputStream()));
connection.getInputStream().close();
responseObject = objectInputStream.readObject();
objectInputStream.close();
}
catch (EOFException eof)
{
LOG.error("EOFException");
}
}
Am I closing the input stream too early for ObjectInputStream or please check where I am getting wrong ? Please let me know if you require any other information. I am getting EOFException while invoking objectInputStream.readObject. PFB the stacktrace.
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2669)
at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3413)
at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:3214)
at java.io.ObjectInputStream.readString(ObjectInputStream.java:1896)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1558)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2276)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2200)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:426)
at java.util.ArrayList.readObject(ArrayList.java:778)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1159)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2167)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2276)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2200)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:426)
at java.util.ArrayList.readObject(ArrayList.java:778)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1159)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2167)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2276)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2200)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2276)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2200)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2276)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2200)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2058)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:426)
at **.**.**.common.backend.impl.BackednImpl.readPOJOFromBackend(XXXXXImpl.java:812)