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:
- Closeable,- DataInput,- ObjectInput,- ObjectStreamConstants,- AutoCloseable
Custom subclass of 
ObjectInputStream that 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
- 
Nested Class SummaryNested classes/interfaces inherited from class java.io.ObjectInputStreamObjectInputStream.GetField
- 
Field SummaryFields 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 SummaryConstructorsConstructorDescriptionReplicationStream(InputStream stream, ClassLoader[] classLoaders) Construct a new instance of CustomObjectInputStream
- 
Method SummaryModifier and TypeMethodDescriptionvoidclose()Class<?>findExternalClass(String name) Class<?>findReplicationClass(String name) Class<?>resolveClass(ObjectStreamClass classDesc) Load the local class equivalent of the specified stream class description, by using the class loader assigned to this Context.Class<?>resolveClass(String name) protected Class<?>resolveProxyClass(String[] interfaces) ObjectInputStream.resolveProxyClass has some funky way of using the incorrect class loader to resolve proxy classes, let's do it our way insteadMethods 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, skipBytesMethods inherited from class java.io.InputStreammark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferToMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.io.ObjectInputread, skip
- 
Constructor Details- 
ReplicationStreamConstruct a new instance of CustomObjectInputStream- Parameters:
- stream- The input stream we will read from
- classLoaders- The class loader array used to instantiate objects
- Throws:
- IOException- if an input/output error occurs
 
 
- 
- 
Method Details- 
resolveClasspublic Class<?> resolveClass(ObjectStreamClass classDesc) throws ClassNotFoundException, IOException Load the local class equivalent of the specified stream class description, by using the class loader assigned to this Context.- Overrides:
- resolveClassin class- ObjectInputStream
- Parameters:
- classDesc- Class description from the input stream
- Throws:
- ClassNotFoundException- if this class cannot be found
- IOException- if an input/output error occurs
 
- 
resolveClass- Throws:
- ClassNotFoundException
 
- 
resolveProxyClassprotected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException ObjectInputStream.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- ObjectInputStream
- Throws:
- IOException
- ClassNotFoundException
 
- 
findReplicationClass- Throws:
- ClassNotFoundException
 
- 
findExternalClass- Throws:
- ClassNotFoundException
 
- 
close- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Specified by:
- closein interface- ObjectInput
- Overrides:
- closein class- ObjectInputStream
- Throws:
- IOException
 
 
-