Class RemoteInvocationSerializingExporter
- java.lang.Object
- org.springframework.remoting.support.RemotingSupport
- org.springframework.remoting.support.RemoteExporter
- org.springframework.remoting.support.RemoteInvocationBasedExporter
- org.springframework.remoting.rmi.RemoteInvocationSerializingExporter
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,InitializingBean
- Direct Known Subclasses:
HttpInvokerServiceExporter
,SimpleHttpInvokerServiceExporter
public abstract class RemoteInvocationSerializingExporter extends RemoteInvocationBasedExporter implements InitializingBean
Abstract base class for remote service exporters that explicitly deserializeRemoteInvocation
objects and serializeRemoteInvocationResult
objects, for example Spring's HTTP invoker.Provides template methods for
ObjectInputStream
andObjectOutputStream
handling.
Field Summary
Fields Modifier and Type Field Description static String
CONTENT_TYPE_SERIALIZED_OBJECT
Default content type: "application/x-java-serialized-object".Fields inherited from class org.springframework.remoting.support.RemotingSupport
logger
Constructor Summary
Constructors Constructor Description RemoteInvocationSerializingExporter()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.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.Methods inherited from class org.springframework.remoting.support.RemoteInvocationBasedExporter
getRemoteInvocationExecutor, invoke, invokeAndCreateResult, setRemoteInvocationExecutor
Methods inherited from class org.springframework.remoting.support.RemoteExporter
checkService, checkServiceInterface, getExporterName, getProxyForService, getService, getServiceInterface, setInterceptors, setRegisterTraceInterceptor, setService, setServiceInterface
Methods inherited from class org.springframework.remoting.support.RemotingSupport
getBeanClassLoader, overrideThreadContextClassLoader, resetThreadContextClassLoader, setBeanClassLoader
Field Detail
CONTENT_TYPE_SERIALIZED_OBJECT
public static final String CONTENT_TYPE_SERIALIZED_OBJECT
Default content type: "application/x-java-serialized-object".- See Also:
- Constant Field Values
Constructor Detail
RemoteInvocationSerializingExporter
public RemoteInvocationSerializingExporter()
Method Detail
setContentType
public void setContentType(String contentType)
Specify the content type to use for sending remote invocation responses.Default is "application/x-java-serialized-object".
getContentType
public String getContentType()
Return the content type to use for sending remote invocation responses.
setAcceptProxyClasses
public void setAcceptProxyClasses(boolean acceptProxyClasses)
Set whether to accept deserialization of proxy classes.Default is "true". May be deactivated as a security measure.
isAcceptProxyClasses
public boolean isAcceptProxyClasses()
Return whether to accept deserialization of proxy classes.
afterPropertiesSet
public void afterPropertiesSet()
Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
prepare
public void prepare()
Initialize this service exporter.
createObjectInputStream
protected ObjectInputStream createObjectInputStream(InputStream is) throws IOException
Create an ObjectInputStream for the given InputStream.The default implementation creates a Spring
CodebaseAwareObjectInputStream
.- Parameters:
is
- the InputStream to read from- Returns:
- the new ObjectInputStream instance to use
- Throws:
IOException
- if creation of the ObjectInputStream failed
doReadRemoteInvocation
protected RemoteInvocation doReadRemoteInvocation(ObjectInputStream ois) throws IOException, ClassNotFoundException
Perform the actual reading of an invocation result object from the given ObjectInputStream.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.- Parameters:
ois
- the ObjectInputStream to read from- Returns:
- the RemoteInvocationResult object
- Throws:
IOException
- in case of I/O failureClassNotFoundException
- if case of a transferred class not being found in the local ClassLoader
createObjectOutputStream
protected ObjectOutputStream createObjectOutputStream(OutputStream os) throws IOException
Create an ObjectOutputStream for the given OutputStream.The default implementation creates a plain
ObjectOutputStream
.- Parameters:
os
- the OutputStream to write to- Returns:
- the new ObjectOutputStream instance to use
- Throws:
IOException
- if creation of the ObjectOutputStream failed
doWriteRemoteInvocationResult
protected void doWriteRemoteInvocationResult(RemoteInvocationResult result, ObjectOutputStream oos) throws IOException
Perform the actual writing of the given invocation result object to the given ObjectOutputStream.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.- Parameters:
result
- the RemoteInvocationResult objectoos
- the ObjectOutputStream to write to- Throws:
IOException
- if thrown by I/O methods