Class ClassLoaderObjectInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants, java.lang.AutoCloseable

    public class ClassLoaderObjectInputStream
    extends java.io.ObjectInputStream
    A special ObjectInputStream that loads a class based on a specified ClassLoader rather than the system default.

    This is useful in dynamic container environments.

    Since:
    1.1
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.io.ObjectInputStream

        java.io.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
      ClassLoaderObjectInputStream​(java.lang.ClassLoader classLoader, java.io.InputStream inputStream)
      Constructs a new ClassLoaderObjectInputStream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Class<?> resolveClass​(java.io.ObjectStreamClass objectStreamClass)
      Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.
      protected java.lang.Class<?> resolveProxyClass​(java.lang.String[] interfaces)
      Create a proxy class that implements the specified interfaces using the specified ClassLoader or the super ClassLoader.
      • 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, 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

      • ClassLoaderObjectInputStream

        public ClassLoaderObjectInputStream​(java.lang.ClassLoader classLoader,
                                            java.io.InputStream inputStream)
                                     throws java.io.IOException,
                                            java.io.StreamCorruptedException
        Constructs a new ClassLoaderObjectInputStream.
        Parameters:
        classLoader - the ClassLoader from which classes should be loaded
        inputStream - the InputStream to work on
        Throws:
        java.io.IOException - in case of an I/O error
        java.io.StreamCorruptedException - if the stream is corrupted
    • Method Detail

      • resolveClass

        protected java.lang.Class<?> resolveClass​(java.io.ObjectStreamClass objectStreamClass)
                                           throws java.io.IOException,
                                                  java.lang.ClassNotFoundException
        Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.
        Overrides:
        resolveClass in class java.io.ObjectInputStream
        Parameters:
        objectStreamClass - descriptor of the class
        Returns:
        the Class object described by the ObjectStreamClass
        Throws:
        java.io.IOException - in case of an I/O error
        java.lang.ClassNotFoundException - if the Class cannot be found
      • resolveProxyClass

        protected java.lang.Class<?> resolveProxyClass​(java.lang.String[] interfaces)
                                                throws java.io.IOException,
                                                       java.lang.ClassNotFoundException
        Create a proxy class that implements the specified interfaces using the specified ClassLoader or the super ClassLoader.
        Overrides:
        resolveProxyClass in class java.io.ObjectInputStream
        Parameters:
        interfaces - the interfaces to implement
        Returns:
        a proxy class implementing the interfaces
        Throws:
        java.io.IOException - in case of an I/O error
        java.lang.ClassNotFoundException - if the Class cannot be found
        Since:
        2.1
        See Also:
        ObjectInputStream.resolveProxyClass(java.lang.String[])