public class Hessian2Output extends AbstractHessianOutput implements Hessian2Constants
Since HessianOutput does not depend on any classes other than in the JDK, it can be extracted independently into a smaller package.
HessianOutput is unbuffered, so any client needs to provide its own buffering.
OutputStream os = ...; // from http connection
Hessian2Output out = new Hessian2Output(os);
String value;
out.startCall("hello", 1); // start hello call
out.writeString("arg1"); // write a string argument
out.completeCall(); // complete the call
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
SIZE |
BC_BINARY, BC_BINARY_CHUNK, BC_BINARY_DIRECT, BC_BINARY_SHORT, BC_CLASS_DEF, BC_DATE, BC_DATE_MINUTE, BC_DOUBLE, BC_DOUBLE_BYTE, BC_DOUBLE_MILL, BC_DOUBLE_ONE, BC_DOUBLE_SHORT, BC_DOUBLE_ZERO, BC_END, BC_FALSE, BC_INT, BC_INT_BYTE_ZERO, BC_INT_SHORT_ZERO, BC_INT_ZERO, BC_LIST_DIRECT, BC_LIST_DIRECT_UNTYPED, BC_LIST_FIXED, BC_LIST_FIXED_UNTYPED, BC_LIST_VARIABLE, BC_LIST_VARIABLE_UNTYPED, BC_LONG, BC_LONG_BYTE_ZERO, BC_LONG_INT, BC_LONG_SHORT_ZERO, BC_LONG_ZERO, BC_MAP, BC_MAP_UNTYPED, BC_NULL, BC_OBJECT, BC_OBJECT_DEF, BC_OBJECT_DIRECT, BC_REF, BC_STRING, BC_STRING_CHUNK, BC_STRING_DIRECT, BC_STRING_SHORT, BC_TRUE, BINARY_DIRECT_MAX, BINARY_SHORT_MAX, INT_BYTE_MAX, INT_BYTE_MIN, INT_DIRECT_MAX, INT_DIRECT_MIN, INT_SHORT_MAX, INT_SHORT_MIN, LIST_DIRECT_MAX, LONG_BYTE_MAX, LONG_BYTE_MIN, LONG_DIRECT_MAX, LONG_DIRECT_MIN, LONG_SHORT_MAX, LONG_SHORT_MIN, OBJECT_DIRECT_MAX, P_PACKET, P_PACKET_CHUNK, P_PACKET_DIRECT, P_PACKET_SHORT, PACKET_DIRECT_MAX, PACKET_SHORT_MAX, STRING_DIRECT_MAX, STRING_SHORT_MAX| 构造器和说明 |
|---|
Hessian2Output(OutputStream os)
Creates a new Hessian output stream, initialized with an
underlying output stream.
|
| 限定符和类型 | 方法和说明 |
|---|---|
boolean |
addRef(Object object)
If the object has already been written, just write its ref.
|
void |
call(String method,
Object[] args)
Writes a complete method call.
|
void |
close() |
void |
completeCall()
Completes.
|
void |
completeEnvelope()
Completes an envelope.
|
void |
completeMessage()
Completes reading the message
A successful completion will have a single value:
z
|
void |
completeReply()
Completes reading the reply
A successful completion will have a single value:
z
|
void |
endStreamingPacket() |
void |
flush() |
void |
flushBuffer() |
OutputStream |
getBytesOutputStream()
Returns an output stream to write binary data.
|
boolean |
isCloseStreamOnClose() |
void |
printLenString(String v)
Prints a string to the stream, encoded as UTF-8 with preceeding length
|
void |
printString(char[] v,
int strOffset,
int length)
Prints a string to the stream, encoded as UTF-8
|
void |
printString(String v)
Prints a string to the stream, encoded as UTF-8
|
void |
printString(String v,
int strOffset,
int length)
Prints a string to the stream, encoded as UTF-8
|
boolean |
removeRef(Object obj)
Removes a reference.
|
boolean |
replaceRef(Object oldRef,
Object newRef)
Replaces a reference from one object to another.
|
void |
resetReferences()
Resets the references for streaming.
|
void |
setCloseStreamOnClose(boolean isClose) |
void |
startCall()
Writes the call tag.
|
void |
startCall(String method,
int length)
Starts the method call.
|
void |
startEnvelope(String method)
Starts an envelope.
|
void |
startMessage()
Starts a packet
A message contains several objects encapsulated by a length
p x02 x00
|
void |
startReply()
Starts the reply
A successful completion will have a single value:
R
|
void |
startStreamingPacket()
Starts a streaming packet
A streaming message starts with 'P'
P x02 x00
|
void |
writeBoolean(boolean value)
Writes a boolean value to the stream.
|
void |
writeByteBufferEnd(byte[] buffer,
int offset,
int length)
Writes a byte buffer to the stream.
|
void |
writeByteBufferPart(byte[] buffer,
int offset,
int length)
Writes a byte buffer to the stream.
|
void |
writeByteBufferStart()
Writes a byte buffer to the stream.
|
void |
writeBytes(byte[] buffer)
Writes a byte array to the stream.
|
void |
writeBytes(byte[] buffer,
int offset,
int length)
Writes a byte array to the stream.
|
void |
writeClassFieldLength(int len)
Writes the tail of the class definition to the stream.
|
void |
writeDouble(double value)
Writes a double value to the stream.
|
void |
writeFault(String code,
String message,
Object detail)
Writes a fault.
|
void |
writeInt(int value)
Writes an integer value to the stream.
|
boolean |
writeListBegin(int length,
String type)
Writes the list header to the stream.
|
void |
writeListEnd()
Writes the tail of the list to the stream for a variable-length list.
|
void |
writeLong(long value)
Writes a long value to the stream.
|
void |
writeMapBegin(String type)
Writes the map header to the stream.
|
void |
writeMapEnd()
Writes the tail of the map to the stream.
|
void |
writeMethod(String method)
Writes the method tag.
|
void |
writeNull()
Writes a null value to the stream.
|
void |
writeObject(Object object)
Writes any object to the output stream.
|
int |
writeObjectBegin(String type)
Writes the object definition
C <string> <int> <string>*
|
void |
writeObjectEnd()
Writes the tail of the object definition to the stream.
|
void |
writeStreamingObject(Object obj)
Starts the streaming message
A streaming message starts with 'P'
P x02 x00
|
void |
writeString(char[] buffer,
int offset,
int length)
Writes a string value to the stream using UTF-8 encoding.
|
void |
writeString(String value)
Writes a string value to the stream using UTF-8 encoding.
|
void |
writeUTCDate(long time)
Writes a date to the stream.
|
void |
writeVersion() |
findSerializerFactory, getSerializerFactory, init, setSerializerFactory, writeHeader, writeReplypublic static final int SIZE
public Hessian2Output(OutputStream os)
os - the underlying output stream.public boolean isCloseStreamOnClose()
public void setCloseStreamOnClose(boolean isClose)
public void call(String method, Object[] args) throws IOException
call 在类中 AbstractHessianOutputIOExceptionpublic void startCall(String method, int length) throws IOException
startCall
instead of call if they wanted finer control over
writing the arguments, or needed to write headers.
C
string # method name
int # arg count
startCall 在类中 AbstractHessianOutputmethod - the method name to call.IOExceptionpublic void startCall()
throws IOException
C
startCall 在类中 AbstractHessianOutputmethod - the method name to call.IOExceptionpublic void startEnvelope(String method) throws IOException
E major minor
m b16 b8 method-name
method - the method name to call.IOExceptionpublic void completeEnvelope()
throws IOException
A successful completion will have a single value:
Z
IOExceptionpublic void writeMethod(String method) throws IOException
string
writeMethod 在类中 AbstractHessianOutputmethod - the method name to call.IOExceptionpublic void completeCall()
throws IOException
z
completeCall 在类中 AbstractHessianOutputIOExceptionpublic void startReply()
throws IOException
A successful completion will have a single value:
R
startReply 在类中 AbstractHessianOutputIOExceptionpublic void writeVersion()
throws IOException
IOExceptionpublic void completeReply()
throws IOException
A successful completion will have a single value:
z
completeReply 在类中 AbstractHessianOutputIOExceptionpublic void startMessage()
throws IOException
A message contains several objects encapsulated by a length
p x02 x00
IOExceptionpublic void completeMessage()
throws IOException
A successful completion will have a single value:
z
IOExceptionpublic void writeFault(String code, String message, Object detail) throws IOException
F map
\x07message
\x11the fault message
\x06detail
M\xnnjavax.ejb.FinderException
...
Z
Z
F H
\x04code
\x10the fault code
writeFault 在类中 AbstractHessianOutputcode - the fault code, a three digitIOExceptionpublic void writeObject(Object object) throws IOException
writeObject 在类中 AbstractHessianOutputIOExceptionpublic boolean writeListBegin(int length,
String type)
throws IOException
writeListBegin followed by the list contents and then
call writeListEnd.
list ::= V type value* Z
::= v type int value*
writeListBegin 在类中 AbstractHessianOutputIOExceptionpublic void writeListEnd()
throws IOException
writeListEnd 在类中 AbstractHessianOutputIOExceptionpublic void writeMapBegin(String type) throws IOException
writeMapBegin followed by the map contents and then
call writeMapEnd.
map ::= M type (
writeMapBegin 在类中 AbstractHessianOutputIOExceptionpublic void writeMapEnd()
throws IOException
writeMapEnd 在类中 AbstractHessianOutputIOExceptionpublic int writeObjectBegin(String type) throws IOException
C <string> <int> <string>*
writeObjectBegin 在类中 AbstractHessianOutputIOExceptionpublic void writeClassFieldLength(int len)
throws IOException
writeClassFieldLength 在类中 AbstractHessianOutputIOExceptionpublic void writeObjectEnd()
throws IOException
writeObjectEnd 在类中 AbstractHessianOutputIOExceptionpublic void writeBoolean(boolean value)
throws IOException
T
F
writeBoolean 在类中 AbstractHessianOutputvalue - the boolean value to write.IOExceptionpublic void writeInt(int value)
throws IOException
I b32 b24 b16 b8
writeInt 在类中 AbstractHessianOutputvalue - the integer value to write.IOExceptionpublic void writeLong(long value)
throws IOException
L b64 b56 b48 b40 b32 b24 b16 b8
writeLong 在类中 AbstractHessianOutputvalue - the long value to write.IOExceptionpublic void writeDouble(double value)
throws IOException
D b64 b56 b48 b40 b32 b24 b16 b8
writeDouble 在类中 AbstractHessianOutputvalue - the double value to write.IOExceptionpublic void writeUTCDate(long time)
throws IOException
date ::= d b7 b6 b5 b4 b3 b2 b1 b0
::= x65 b3 b2 b1 b0
writeUTCDate 在类中 AbstractHessianOutputtime - the date in milliseconds from the epoch in UTCIOExceptionpublic void writeNull()
throws IOException
N
writeNull 在类中 AbstractHessianOutputvalue - the string value to write.IOExceptionpublic void writeString(String value) throws IOException
S b16 b8 string-value
If the value is null, it will be written as
N
writeString 在类中 AbstractHessianOutputvalue - the string value to write.IOExceptionpublic void writeString(char[] buffer,
int offset,
int length)
throws IOException
S b16 b8 string-value
If the value is null, it will be written as
N
writeString 在类中 AbstractHessianOutputvalue - the string value to write.IOExceptionpublic void writeBytes(byte[] buffer)
throws IOException
B b16 b18 bytes
If the value is null, it will be written as
N
writeBytes 在类中 AbstractHessianOutputvalue - the string value to write.IOExceptionpublic void writeBytes(byte[] buffer,
int offset,
int length)
throws IOException
B b16 b18 bytes
If the value is null, it will be written as
N
writeBytes 在类中 AbstractHessianOutputvalue - the string value to write.IOExceptionpublic void writeByteBufferStart()
throws IOException
writeByteBufferStart 在类中 AbstractHessianOutputIOExceptionpublic void writeByteBufferPart(byte[] buffer,
int offset,
int length)
throws IOException
b b16 b18 bytes
writeByteBufferPart 在类中 AbstractHessianOutputIOExceptionpublic void writeByteBufferEnd(byte[] buffer,
int offset,
int length)
throws IOException
b b16 b18 bytes
writeByteBufferEnd 在类中 AbstractHessianOutputIOExceptionpublic OutputStream getBytesOutputStream() throws IOException
IOExceptionpublic boolean addRef(Object object) throws IOException
addRef 在类中 AbstractHessianOutputobject - the object to add as a reference.IOExceptionpublic boolean removeRef(Object obj) throws IOException
removeRef 在类中 AbstractHessianOutputIOExceptionpublic boolean replaceRef(Object oldRef, Object newRef) throws IOException
replaceRef 在类中 AbstractHessianOutputIOExceptionpublic void resetReferences()
resetReferences 在类中 AbstractHessianOutputpublic void writeStreamingObject(Object obj) throws IOException
A streaming message starts with 'P'
P x02 x00
IOExceptionpublic void startStreamingPacket()
throws IOException
A streaming message starts with 'P'
P x02 x00
IOExceptionpublic void endStreamingPacket()
throws IOException
IOExceptionpublic void printLenString(String v) throws IOException
v - the string to print.IOExceptionpublic void printString(String v) throws IOException
v - the string to print.IOExceptionpublic void printString(String v, int strOffset, int length) throws IOException
v - the string to print.IOExceptionpublic void printString(char[] v,
int strOffset,
int length)
throws IOException
v - the string to print.IOExceptionpublic final void flush()
throws IOException
flush 在类中 AbstractHessianOutputIOExceptionpublic final void flushBuffer()
throws IOException
IOExceptionpublic final void close()
throws IOException
close 在类中 AbstractHessianOutputIOExceptionCopyright © 2011–2018 The Apache Software Foundation. All rights reserved.