|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor
public abstract class AbstractHttpInvokerRequestExecutor
Abstract base implementation of the HttpInvokerRequestExecutor interface.
Pre-implements serialization of RemoteInvocation objects and deserialization of RemoteInvocationResults objects.
doExecuteRequest(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.io.ByteArrayOutputStream)
Field Summary | |
---|---|
static String |
CONTENT_TYPE_SERIALIZED_OBJECT
Default content type: "application/x-java-serialized-object" |
protected static String |
ENCODING_GZIP
|
protected static String |
HTTP_HEADER_ACCEPT_ENCODING
|
protected static String |
HTTP_HEADER_CONTENT_ENCODING
|
protected static String |
HTTP_HEADER_CONTENT_LENGTH
|
protected static String |
HTTP_HEADER_CONTENT_TYPE
|
protected static String |
HTTP_METHOD_POST
|
protected Log |
logger
|
Constructor Summary | |
---|---|
AbstractHttpInvokerRequestExecutor()
|
Method Summary | |
---|---|
protected ObjectInputStream |
createObjectInputStream(InputStream is,
String codebaseUrl)
Create an ObjectInputStream for the given InputStream and codebase. |
protected InputStream |
decorateInputStream(InputStream is)
Return the InputStream to use for reading remote invocation results, potentially decorating the given original InputStream. |
protected OutputStream |
decorateOutputStream(OutputStream os)
Return the OutputStream to use for writing remote invocations, potentially decorating the given original OutputStream. |
protected abstract RemoteInvocationResult |
doExecuteRequest(HttpInvokerClientConfiguration config,
ByteArrayOutputStream baos)
Execute a request to send the given serialized remote invocation. |
protected RemoteInvocationResult |
doReadRemoteInvocationResult(ObjectInputStream ois)
Perform the actual reading of an invocation object from the given ObjectInputStream. |
protected void |
doWriteRemoteInvocation(RemoteInvocation invocation,
ObjectOutputStream oos)
Perform the actual writing of the given invocation object to the given ObjectOutputStream. |
RemoteInvocationResult |
executeRequest(HttpInvokerClientConfiguration config,
RemoteInvocation invocation)
Execute a request to send the given remote invocation. |
protected ClassLoader |
getBeanClassLoader()
Return the bean ClassLoader that this executor is supposed to use. |
protected ByteArrayOutputStream |
getByteArrayOutputStream(RemoteInvocation invocation)
Serialize the given RemoteInvocation into a ByteArrayOutputStream. |
String |
getContentType()
Return the content type to use for sending HTTP invoker requests. |
boolean |
isAcceptGzipEncoding()
Return whether to accept GZIP encoding, that is, whether to send the HTTP "Accept-Encoding" header with "gzip" as value. |
protected RemoteInvocationResult |
readRemoteInvocationResult(InputStream is,
String codebaseUrl)
Deserialize a RemoteInvocationResult object from the given InputStream. |
void |
setAcceptGzipEncoding(boolean acceptGzipEncoding)
Set whether to accept GZIP encoding, that is, whether to send the HTTP "Accept-Encoding" header with "gzip" as value. |
void |
setBeanClassLoader(ClassLoader classLoader)
Callback that supplies the bean class loader to
a bean instance. |
void |
setContentType(String contentType)
Specify the content type to use for sending HTTP invoker requests. |
protected void |
writeRemoteInvocation(RemoteInvocation invocation,
OutputStream os)
Serialize the given RemoteInvocation to the given OutputStream. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String CONTENT_TYPE_SERIALIZED_OBJECT
protected static final String HTTP_METHOD_POST
protected static final String HTTP_HEADER_CONTENT_TYPE
protected static final String HTTP_HEADER_CONTENT_LENGTH
protected static final String HTTP_HEADER_ACCEPT_ENCODING
protected static final String HTTP_HEADER_CONTENT_ENCODING
protected static final String ENCODING_GZIP
protected final Log logger
Constructor Detail |
---|
public AbstractHttpInvokerRequestExecutor()
Method Detail |
---|
public void setContentType(String contentType)
Default is "application/x-java-serialized-object".
public String getContentType()
public void setAcceptGzipEncoding(boolean acceptGzipEncoding)
Default is "true". Turn this flag off if you do not want GZIP response compression even if enabled on the HTTP server.
public boolean isAcceptGzipEncoding()
public void setBeanClassLoader(ClassLoader classLoader)
BeanClassLoaderAware
class loader
to
a bean instance.
Invoked after the population of normal bean properties but
before an initialization callback such as
InitializingBean's
InitializingBean.afterPropertiesSet()
method or a custom init-method.
setBeanClassLoader
in interface BeanClassLoaderAware
classLoader
- the owning class loader; may be null
in
which case a default ClassLoader
must be used, for example
the ClassLoader
obtained via
ClassUtils.getDefaultClassLoader()
protected ClassLoader getBeanClassLoader()
public final RemoteInvocationResult executeRequest(HttpInvokerClientConfiguration config, RemoteInvocation invocation) throws Exception
HttpInvokerRequestExecutor
executeRequest
in interface HttpInvokerRequestExecutor
config
- the HTTP invoker configuration that specifies the
target serviceinvocation
- the RemoteInvocation to execute
IOException
- if thrown by I/O operations
ClassNotFoundException
- if thrown during deserialization
Exception
- in case of general errorsprotected ByteArrayOutputStream getByteArrayOutputStream(RemoteInvocation invocation) throws IOException
invocation
- the RemoteInvocation object
IOException
- if thrown by I/O methodsprotected void writeRemoteInvocation(RemoteInvocation invocation, OutputStream os) throws IOException
The default implementation gives decorateOutputStream
a chance
to decorate the stream first (for example, for custom encryption or compression).
Creates an ObjectOutputStream
for the final stream and calls
doWriteRemoteInvocation
to actually write the object.
Can be overridden for custom serialization of the invocation.
invocation
- the RemoteInvocation objectos
- the OutputStream to write to
IOException
- if thrown by I/O methodsdecorateOutputStream(java.io.OutputStream)
,
doWriteRemoteInvocation(org.springframework.remoting.support.RemoteInvocation, java.io.ObjectOutputStream)
protected OutputStream decorateOutputStream(OutputStream os) throws IOException
The default implementation returns the given stream as-is. Can be overridden, for example, for custom encryption or compression.
os
- the original OutputStream
IOException
protected void doWriteRemoteInvocation(RemoteInvocation invocation, ObjectOutputStream oos) throws IOException
The default implementation simply calls writeObject
.
Can be overridden for serialization of a custom wrapper object rather
than the plain invocation, for example an encryption-aware holder.
invocation
- the RemoteInvocation objectoos
- the ObjectOutputStream to write to
IOException
- if thrown by I/O methodsObjectOutputStream.writeObject(java.lang.Object)
protected abstract RemoteInvocationResult doExecuteRequest(HttpInvokerClientConfiguration config, ByteArrayOutputStream baos) throws Exception
Implementations will usually call readRemoteInvocationResult
to deserialize a returned RemoteInvocationResult object.
config
- the HTTP invoker configuration that specifies the
target servicebaos
- the ByteArrayOutputStream that contains the serialized
RemoteInvocation object
IOException
- if thrown by I/O operations
ClassNotFoundException
- if thrown during deserialization
Exception
- in case of general errorsreadRemoteInvocationResult(java.io.InputStream, String)
protected RemoteInvocationResult readRemoteInvocationResult(InputStream is, String codebaseUrl) throws IOException, ClassNotFoundException
Gives decorateInputStream
a chance to decorate the stream
first (for example, for custom encryption or compression). Creates an
ObjectInputStream
via createObjectInputStream
and
calls doReadRemoteInvocationResult
to actually read the object.
Can be overridden for custom serialization of the invocation.
is
- the InputStream to read fromcodebaseUrl
- the codebase URL to load classes from if not found locally
IOException
- if thrown by I/O methods
ClassNotFoundException
- if thrown during deserializationdecorateInputStream(java.io.InputStream)
,
createObjectInputStream(java.io.InputStream, java.lang.String)
,
doReadRemoteInvocationResult(java.io.ObjectInputStream)
protected InputStream decorateInputStream(InputStream is) throws IOException
The default implementation returns the given stream as-is. Can be overridden, for example, for custom encryption or compression.
is
- the original InputStream
IOException
protected ObjectInputStream createObjectInputStream(InputStream is, String codebaseUrl) throws IOException
Spring's CodebaseAwareObjectInputStream is not only used for loading from a specified codebase, but also to explicitly resolve primitive class names. This is done by the standard ObjectInputStream on JDK 1.4+, but needs to be done explicitly on JDK 1.3.
is
- the InputStream to read fromcodebaseUrl
- the codebase URL to load classes from if not found locally
(can be null
)
IOException
- if creation of the ObjectInputStream failedCodebaseAwareObjectInputStream
protected RemoteInvocationResult doReadRemoteInvocationResult(ObjectInputStream ois) throws IOException, ClassNotFoundException
The default implementation simply calls readObject
.
Can be overridden for deserialization of a custom wrapper object rather
than the plain invocation, for example an encryption-aware holder.
ois
- the ObjectInputStream to read from
IOException
- if thrown by I/O methods
ClassNotFoundException
ObjectOutputStream.writeObject(java.lang.Object)
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |