## org.springframework.remoting.rmi
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:
  BeanClassLoaderAware, InitializingBean

Direct Known Subclasses:
  HttpInvokerServiceExporter, SimpleHttpInvokerServiceExporter

    public abstract class RemoteInvocationSerializingExporter

extends RemoteInvocationBasedExporter
implements InitializingBean

Abstract base class for remote service exporters that explicitly deserialize `RemoteInvocation` objects and serialize `RemoteInvocationResult` objects, for example Spring's HTTP invoker.

Provides template methods for `ObjectInputStream` and `ObjectOutputStream` handling.

Since:
  2.5.1
Author:
  Juergen Hoeller
See Also:
  `ObjectInputStream`, `ObjectOutputStream`, `doReadRemoteInvocation(java.io.ObjectInputStream)`, `doWriteRemoteInvocationResult(org.springframework.remoting.support.RemoteInvocationResult, java.io.ObjectOutputStream)`

Field Summary
`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
`RemoteInvocationSerializingExporter()`

Method Summary
`void` `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
`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`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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 a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

  This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`

### prepare

    public void prepare()

  Initialize this service exporter.

### getProxy

    protected final Object getProxy()

### 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 failure
    `ClassNotFoundException` - 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 object
    `oos` - the ObjectOutputStream to write to
  Throws:
    `IOException` - if thrown by I/O methods