public class MarshalOutputStream extends AnnotatedObjectOutputStream
ObjectOutputStream that implements the dynamic class loading
semantics of RMI argument and result marshalling (using RMIClassLoader). A
MarshalOutputStream writes data that is intended to be written by a corresponding
MarshalInputStream.
MarshalOutputStream implements the output side of the dynamic class loading
semantics by overriding annotateClass and annotateProxyClass to annotate class descriptors in the
stream with codebase strings obtained using RMIClassLoader.getClassAnnotation.
MarshalOutputStream writes class annotations to its own stream; a subclass may
override the writeAnnotation method to write the class annotations to a
different location.
MarshalOutputStream does not modify the stream protocol version of its instances'
superclass state (see ObjectOutputStream.useProtocolVersion).
| Modifier and Type | Class and Description |
|---|---|
static class |
MarshalOutputStream.Context |
ObjectOutputStream.PutFieldbaseWireHandle, 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 and Description |
|---|
MarshalOutputStream(OutputStream out) |
MarshalOutputStream(OutputStream out,
boolean optimize)
Creates a new
MarshalOutputStream that writes marshalled data to the specified
underlying OutputStream. |
| Modifier and Type | Method and Description |
|---|---|
void |
closeContext() |
void |
resetContext() |
protected void |
writeAnnotation(Class cl)
First checks that this class wasn't written already, if it does do nothing.
|
protected void |
writeClassDescriptor(ObjectStreamClass desc)
Overrides the original implementation, tries to save sending class descriptor, first checks
if the class was already sent.
|
void |
writeRepetitiveObject(Object obj)
Writes a repetitive object.
|
void |
writeSmartExternalizable(SmartExternalizable obj) |
protected void |
writeStreamHeader() |
annotateClass, annotateProxyClassclose, defaultWriteObject, drain, enableReplaceObject, flush, putFields, replaceObject, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeObjectOverride, writeShort, writeUnshared, writeUTFpublic MarshalOutputStream(OutputStream out) throws IOException
IOExceptionpublic MarshalOutputStream(OutputStream out, boolean optimize) throws IOException
MarshalOutputStream that writes marshalled data to the specified
underlying OutputStream.
This constructor passes out to the superclass constructor that has an
OutputStream parameter.
out - the output stream to write marshalled data tooptimize - whether to activate the class description optimization during serialization.IOException - if the superclass's constructor throws an IOExceptionSecurityException - if the superclass's constructor throws a SecurityExceptionpublic void writeRepetitiveObject(Object obj) throws IOException
IOExceptionpublic void writeSmartExternalizable(SmartExternalizable obj) throws IOException
IOExceptionprotected void writeAnnotation(Class cl) throws IOException
Else invokes RMIClassLoader.getClassAnnotation
with cl to get the appropriate class annotation string value (possibly
null) and then writes a class annotation string value (possibly
null) to be read by a corresponding MarshalInputStream
implementation.
MarshalOutputStream implements this method to just write the annotation value
to this stream using writeUnshared.
A subclass can override this method to write the annotation to a different location.
writeAnnotation in class AnnotatedObjectOutputStreamcl - the class annotation string value (possibly null) to writeIOException - if I/O exception occurs writing the annotationprotected void writeClassDescriptor(ObjectStreamClass desc) throws IOException
writeClassDescriptor in class ObjectOutputStreamdesc - class descriptor to write to the stream.IOException - If an I/O error has occurred.protected void writeStreamHeader()
throws IOException
writeStreamHeader in class ObjectOutputStreamIOExceptionpublic void closeContext()
public void resetContext()
Copyright © GigaSpaces.