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
Custom specialization of the standard JDK
ObjectInputStream
that uses a custom ClassLoader to resolve a class.
If the specified ClassLoader is 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 the
ClassLoader the 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
FieldsFields 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, 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
ConstructorsConstructorDescriptionClassLoaderAwareObjectInputStream(InputStream in, ClassLoader classLoader) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected Class<?> Overridden version that uses the parameterizedClassLoaderor theClassLoaderof the currentThreadto resolve the class.Methods inherited from class java.io.ObjectInputStream
available, close, defaultReadObject, enableResolveObject, 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, skipBytesMethods inherited from class java.io.InputStream
mark, markSupported, read, reset, skipMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.io.ObjectInput
read, skip
-
Field Details
-
primitiveTypes
-
classLoader
-
-
Constructor Details
-
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:
-
-
Method Details
-
resolveClass
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.
-