Package org.apache.catalina.tribes.io
Class ReplicationStream
- java.lang.Object
- 
- java.io.InputStream
- 
- java.io.ObjectInputStream
- 
- org.apache.catalina.tribes.io.ReplicationStream
 
 
 
- 
- All Implemented Interfaces:
- java.io.Closeable,- java.io.DataInput,- java.io.ObjectInput,- java.io.ObjectStreamConstants,- java.lang.AutoCloseable
 
 public final class ReplicationStream extends java.io.ObjectInputStreamCustom subclass ofObjectInputStreamthat loads from the class loader for this web application. This allows classes defined only with the web application to be found correctly.- Author:
- Craig R. McClanahan, Bip Thelin
 
- 
- 
Field Summary- 
Fields inherited from interface java.io.ObjectStreamConstantsbaseWireHandle, 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 SummaryConstructors Constructor Description ReplicationStream(java.io.InputStream stream, java.lang.ClassLoader[] classLoaders)Construct a new instance of CustomObjectInputStream
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()java.lang.Class<?>findExternalClass(java.lang.String name)java.lang.Class<?>findReplicationClass(java.lang.String name)java.lang.Class<?>resolveClass(java.io.ObjectStreamClass classDesc)Load the local class equivalent of the specified stream class description, by using the class loader assigned to this Context.java.lang.Class<?>resolveClass(java.lang.String name)protected java.lang.Class<?>resolveProxyClass(java.lang.String[] interfaces)ObjectInputStream.resolveProxyClass has some funky way of using the incorrect class loader to resolve proxy classes, let's do it our way instead- 
Methods inherited from class java.io.ObjectInputStreamavailable, 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.InputStreammark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
 
- 
 
- 
- 
- 
Constructor Detail- 
ReplicationStreampublic ReplicationStream(java.io.InputStream stream, java.lang.ClassLoader[] classLoaders) throws java.io.IOExceptionConstruct a new instance of CustomObjectInputStream- Parameters:
- stream- The input stream we will read from
- classLoaders- The class loader array used to instantiate objects
- Throws:
- java.io.IOException- if an input/output error occurs
 
 
- 
 - 
Method Detail- 
resolveClasspublic java.lang.Class<?> resolveClass(java.io.ObjectStreamClass classDesc) throws java.lang.ClassNotFoundException, java.io.IOExceptionLoad the local class equivalent of the specified stream class description, by using the class loader assigned to this Context.- Overrides:
- resolveClassin class- java.io.ObjectInputStream
- Parameters:
- classDesc- Class description from the input stream
- Throws:
- java.lang.ClassNotFoundException- if this class cannot be found
- java.io.IOException- if an input/output error occurs
 
 - 
resolveClasspublic java.lang.Class<?> resolveClass(java.lang.String name) throws java.lang.ClassNotFoundException- Throws:
- java.lang.ClassNotFoundException
 
 - 
resolveProxyClassprotected java.lang.Class<?> resolveProxyClass(java.lang.String[] interfaces) throws java.io.IOException, java.lang.ClassNotFoundExceptionObjectInputStream.resolveProxyClass has some funky way of using the incorrect class loader to resolve proxy classes, let's do it our way instead- Overrides:
- resolveProxyClassin class- java.io.ObjectInputStream
- Throws:
- java.io.IOException
- java.lang.ClassNotFoundException
 
 - 
findReplicationClasspublic java.lang.Class<?> findReplicationClass(java.lang.String name) throws java.lang.ClassNotFoundException- Throws:
- java.lang.ClassNotFoundException
 
 - 
findExternalClasspublic java.lang.Class<?> findExternalClass(java.lang.String name) throws java.lang.ClassNotFoundException- Throws:
- java.lang.ClassNotFoundException
 
 - 
closepublic void close() throws java.io.IOException- Specified by:
- closein interface- java.lang.AutoCloseable
- Specified by:
- closein interface- java.io.Closeable
- Specified by:
- closein interface- java.io.ObjectInput
- Overrides:
- closein class- java.io.ObjectInputStream
- Throws:
- java.io.IOException
 
 
- 
 
-