jgroup.relacs.rmi
Class MarshalOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by java.io.ObjectOutputStream
          extended by jgroup.relacs.rmi.MarshalOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.DataOutput, java.io.Flushable, java.io.ObjectOutput, java.io.ObjectStreamConstants

public class MarshalOutputStream
extends java.io.ObjectOutputStream

This class overrides the replaceObject method to replace each exported remote object with its corresponding stub instance. This is obtained by using the java.rmi.MarshalledObject class, that contains a byte stream with the serialized representation of an object given to its constructor. The contained object is serialized and deserialized with the same serialization semantics used for marshaling and unmarshaling parameters and return values of RMI calls.

Since:
Jgroup 0.8
Author:
Alberto Montresor

Nested Class Summary
 
Nested classes/interfaces inherited from class java.io.ObjectOutputStream
java.io.ObjectOutputStream.PutField
 
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
protected MarshalOutputStream()
          Provide a way for subclasses that are completely reimplementing MarshalOutputStream to not have to allocate private data just used by this implementation of ObjectOutputStream.
  MarshalOutputStream(java.io.OutputStream out)
           
 
Method Summary
protected  java.lang.Object replaceObject(java.lang.Object obj)
          If the specified object is a Remote object, substitutes it with a marshalled form of it.
 
Methods inherited from class java.io.ObjectOutputStream
annotateClass, annotateProxyClass, close, defaultWriteObject, drain, enableReplaceObject, flush, putFields, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeClassDescriptor, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeObjectOverride, writeShort, writeStreamHeader, writeUnshared, writeUTF
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MarshalOutputStream

protected MarshalOutputStream()
                       throws java.io.IOException
Provide a way for subclasses that are completely reimplementing MarshalOutputStream to not have to allocate private data just used by this implementation of ObjectOutputStream.

If there is a security manager installed, this method first calls the security manager's checkPermission method with a SerializablePermission("enableSubclassImplementation") permission to ensure it's ok to enable subclassing.

Throws:
java.io.IOException - Thrown if not called by a subclass.
java.lang.SecurityException - if a security manager exists and its checkPermission method denies enabling subclassing.

MarshalOutputStream

public MarshalOutputStream(java.io.OutputStream out)
                    throws java.io.IOException
Throws:
java.io.IOException
Method Detail

replaceObject

protected java.lang.Object replaceObject(java.lang.Object obj)
                                  throws java.io.IOException
If the specified object is a Remote object, substitutes it with a marshalled form of it.

Overrides:
replaceObject in class java.io.ObjectOutputStream
Throws:
java.io.IOException


Copyright © 1998-2006 The Jgroup/ARM development team. All Rights Reserved.