Package org.apache.commons.lang3
Class SerializationUtils.ClassLoaderAwareObjectInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.ObjectInputStream
-
- org.apache.commons.lang3.SerializationUtils.ClassLoaderAwareObjectInputStream
-
- All Implemented Interfaces:
Closeable,DataInput,ObjectInput,ObjectStreamConstants,AutoCloseable
- Enclosing class:
- SerializationUtils
static class SerializationUtils.ClassLoaderAwareObjectInputStream extends ObjectInputStream
Custom specialization of the standard JDK
ObjectInputStreamthat uses a customClassLoaderto resolve a class. If the specifiedClassLoaderis not able to resolve the class, the context classloader of the current thread will be used. This way, the standard deserialization work also in web-application containers and application servers, no matter in which of theClassLoaderthe particular class that encapsulates serialization/deserialization lives.For more in-depth information about the problem for which this class here is a workaround, see the JIRA issue LANG-626.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.io.ObjectInputStream
ObjectInputStream.GetField
-
-
Field Summary
-
Fields inherited from interface java.io.ObjectStreamConstants
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, SERIAL_FILTER_PERMISSION, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
-
-
Constructor Summary
Constructors Constructor Description ClassLoaderAwareObjectInputStream(InputStream in, ClassLoader classLoader)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Class<?>resolveClass(ObjectStreamClass desc)Overridden version that uses the parameterizedClassLoaderor theClassLoaderof the currentThreadto resolve the class.-
Methods inherited from class java.io.ObjectInputStream
available, close, defaultReadObject, enableResolveObject, getObjectInputFilter, read, read, readBoolean, readByte, readChar, readClassDescriptor, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, resolveProxyClass, setObjectInputFilter, skipBytes
-
Methods inherited from class java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.io.ObjectInput
read, skip
-
-
-
-
Constructor Detail
-
ClassLoaderAwareObjectInputStream
ClassLoaderAwareObjectInputStream(InputStream in, ClassLoader classLoader) throws IOException
Constructor.- Parameters:
in- TheInputStream.classLoader- classloader to use- Throws:
IOException- if an I/O error occurs while reading stream header.- See Also:
ObjectInputStream
-
-
Method Detail
-
resolveClass
protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException
Overridden version that uses the parameterizedClassLoaderor theClassLoaderof the currentThreadto resolve the class.- Overrides:
resolveClassin classObjectInputStream- Parameters:
desc- An instance of classObjectStreamClass.- Returns:
- A
Classobject corresponding todesc. - Throws:
IOException- Any of the usual Input/Output exceptions.ClassNotFoundException- If class of a serialized object cannot be found.
-
-