Overview | Package | Class | Tree | Deprecated | Index | Help
| Apache Tomcat 7.0.29
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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

    public final class ReplicationStream

extends ObjectInputStream

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.

Version:
  $Id: ReplicationStream.java 939305 2010-04-29 13:43:39Z kkolinko $
Author:
  Craig R. McClanahan, Bip Thelin, Filip Hanik

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, 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
`ReplicationStream(InputStream stream, ClassLoader[] classLoaders)` Construct a new instance of CustomObjectInputStream

Method Summary
`void` | `close()`
`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 instead

Methods inherited from class java.io.ObjectInputStream
`available, 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, skipBytes`

Methods inherited from class java.io.InputStream
`mark, markSupported, read, reset, skip`

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

### ReplicationStream

    public ReplicationStream(InputStream stream,
                             ClassLoader[] classLoaders)
                      throws IOException

  Construct 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 Detail

### resolveClass

    public 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:
    `resolveClass` in 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

    public Class<?> resolveClass(String name)
                          throws ClassNotFoundException,
                                 IOException

  Throws:
    `ClassNotFoundException`
    `IOException`

### resolveProxyClass

    protected 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:
    `resolveProxyClass` in class `ObjectInputStream`
  Throws:
    `IOException`
    `ClassNotFoundException`

### findReplicationClass

    public Class<?> findReplicationClass(String name)
                                  throws ClassNotFoundException,
                                         IOException

  Throws:
    `ClassNotFoundException`
    `IOException`

### findExternalClass

    public Class<?> findExternalClass(String name)
                               throws ClassNotFoundException

  Throws:
    `ClassNotFoundException`

### close

    public void close()
               throws IOException

  Specified by:
    `close` in interface `Closeable`
  Specified by:
    `close` in interface `ObjectInput`
  Overrides:
    `close` in class `ObjectInputStream`
  Throws:
    `IOException`

Overview | Package | Class | Tree | Deprecated | Index | Help
| Apache Tomcat 7.0.29
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.