public abstract class RemoteInvocationSerializingExporter extends RemoteInvocationBasedExporter implements org.springframework.beans.factory.InitializingBean
RemoteInvocation
objects and serialize
RemoteInvocationResult
objects,
for example Spring's HTTP invoker.
Provides template methods for ObjectInputStream
and
ObjectOutputStream
handling.
ObjectInputStream
,
ObjectOutputStream
,
doReadRemoteInvocation(java.io.ObjectInputStream)
,
doWriteRemoteInvocationResult(org.springframework.remoting.support.RemoteInvocationResult, java.io.ObjectOutputStream)
Modifier and Type | Field and Description |
---|---|
static String |
CONTENT_TYPE_SERIALIZED_OBJECT
Default content type: "application/x-java-serialized-object".
|
logger
Constructor and Description |
---|
RemoteInvocationSerializingExporter() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
protected ObjectInputStream |
createObjectInputStream(InputStream is)
Create an ObjectInputStream for the given InputStream.
|
protected ObjectOutputStream |
createObjectOutputStream(OutputStream os)
Create an ObjectOutputStream for the given OutputStream.
|
protected RemoteInvocation |
doReadRemoteInvocation(ObjectInputStream ois)
Perform the actual reading of an invocation result object from the
given ObjectInputStream.
|
protected void |
doWriteRemoteInvocationResult(RemoteInvocationResult result,
ObjectOutputStream oos)
Perform the actual writing of the given invocation result object
to the given ObjectOutputStream.
|
String |
getContentType()
Return the content type to use for sending remote invocation responses.
|
protected Object |
getProxy() |
boolean |
isAcceptProxyClasses()
Return whether to accept deserialization of proxy classes.
|
void |
prepare()
Initialize this service exporter.
|
void |
setAcceptProxyClasses(boolean acceptProxyClasses)
Set whether to accept deserialization of proxy classes.
|
void |
setContentType(String contentType)
Specify the content type to use for sending remote invocation responses.
|
getRemoteInvocationExecutor, invoke, invokeAndCreateResult, setRemoteInvocationExecutor
checkService, checkServiceInterface, getExporterName, getProxyForService, getService, getServiceInterface, setInterceptors, setRegisterTraceInterceptor, setService, setServiceInterface
getBeanClassLoader, overrideThreadContextClassLoader, resetThreadContextClassLoader, setBeanClassLoader
public static final String CONTENT_TYPE_SERIALIZED_OBJECT
public void setContentType(String contentType)
Default is "application/x-java-serialized-object".
public String getContentType()
public void setAcceptProxyClasses(boolean acceptProxyClasses)
Default is "true". May be deactivated as a security measure.
public boolean isAcceptProxyClasses()
public void afterPropertiesSet()
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean
public void prepare()
protected final Object getProxy()
protected ObjectInputStream createObjectInputStream(InputStream is) throws IOException
The default implementation creates a Spring CodebaseAwareObjectInputStream
.
is
- the InputStream to read fromIOException
- if creation of the ObjectInputStream failedprotected RemoteInvocation doReadRemoteInvocation(ObjectInputStream ois) throws IOException, ClassNotFoundException
The default implementation simply calls
ObjectInputStream.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 fromIOException
- in case of I/O failureClassNotFoundException
- if case of a transferred class not
being found in the local ClassLoaderprotected ObjectOutputStream createObjectOutputStream(OutputStream os) throws IOException
The default implementation creates a plain
ObjectOutputStream
.
os
- the OutputStream to write toIOException
- if creation of the ObjectOutputStream failedprotected void doWriteRemoteInvocationResult(RemoteInvocationResult result, ObjectOutputStream oos) throws IOException
The default implementation simply calls
ObjectOutputStream.writeObject(java.lang.Object)
.
Can be overridden for serialization of a custom wrapper object rather
than the plain invocation, for example an encryption-aware holder.
result
- the RemoteInvocationResult objectoos
- the ObjectOutputStream to write toIOException
- if thrown by I/O methods