sun.rmi.server
public class: MarshalOutputStream [javadoc |
source]
java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
sun.rmi.server.MarshalOutputStream
All Implemented Interfaces:
ObjectStreamConstants, ObjectOutput, Closeable, Flushable
Direct Known Subclasses:
ConnectionOutputStream
A MarshalOutputStream extends ObjectOutputStream to add functions
specific to marshaling of remote object references. If it is
necessary to serialize remote objects or objects that contain
references to remote objects a MarshalOutputStream must be used
instead of ObjectOutputStream.
A new MarshalOutputStream is constructed to serialize remote
objects or graphs containing remote objects. Objects are written to
the stream using the ObjectOutputStream.writeObject method.
MarshalOutputStream maps remote objects to the corresponding remote
stub and embeds the location from which to load the stub
classes. The location may be ignored by the client but is supplied.
| Constructor: |
public MarshalOutputStream(OutputStream out) throws IOException {
this(out, ObjectStreamConstants.PROTOCOL_VERSION_1);
}
Creates a marshal output stream with protocol version 1. |
public MarshalOutputStream(OutputStream out,
int protocolVersion) throws IOException {
super(out);
this.useProtocolVersion(protocolVersion);
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction< Void >() {
public Void run() {
enableReplaceObject(true);
return null;
}
});
}
Creates a marshal output stream with the given protocol version. |
| Methods from java.io.ObjectOutputStream: |
|---|
|
close, defaultWriteObject, flush, putFields, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeShort, writeUTF, writeUnshared |
| Method from sun.rmi.server.MarshalOutputStream Detail: |
protected void annotateClass(Class cl) throws IOException {
writeLocation(java.rmi.server.RMIClassLoader.getClassAnnotation(cl));
}
Serializes a location from which to load the the specified class. |
protected void annotateProxyClass(Class cl) throws IOException {
annotateClass(cl);
}
Serializes a location from which to load the specified class. |
protected final Object replaceObject(Object obj) throws IOException {
if ((obj instanceof Remote) && !(obj instanceof RemoteStub)) {
Target target = ObjectTable.getTarget((Remote) obj);
if (target != null) {
return target.getStub();
}
}
return obj;
}
Checks for objects that are instances of java.rmi.Remote
that need to be serialized as proxy objects. |
protected void writeLocation(String location) throws IOException {
writeObject(location);
}
Writes the location for the class into the stream. This method can
be overridden by subclasses that store this annotation somewhere
else than as the next object in the stream, as is done by this class. |