org.springframework.remoting.caucho

## Class HessianExporter

- java.lang.Object
- - org.springframework.remoting.support.RemotingSupport
  - - org.springframework.remoting.support.RemoteExporter
    - - org.springframework.remoting.caucho.HessianExporter

- All Implemented Interfaces:
    Aware, BeanClassLoaderAware, InitializingBean
  Direct Known Subclasses:
    HessianServiceExporter, SimpleHessianServiceExporter

      public class HessianExporter
      extends RemoteExporter
      implements InitializingBean

  General stream-based protocol exporter for a Hessian endpoint.

  Hessian is a slim, binary RPC protocol. For information on Hessian, see the Hessian website. Note: As of Spring 4.0, this exporter requires Hessian 4.0 or above.

  Since:
    2.5.1
  Author:
    Juergen Hoeller
  See Also:
    `invoke(java.io.InputStream, java.io.OutputStream)`, `HessianServiceExporter`, `SimpleHessianServiceExporter`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `CONTENT_TYPE_HESSIAN`

    - ### Fields inherited from class org.springframework.remoting.support.RemotingSupport

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HessianExporter()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
    `protected void` | `doInvoke(com.caucho.hessian.server.HessianSkeleton skeleton, InputStream inputStream, OutputStream outputStream)` Actually invoke the skeleton with the given streams.
    `void` | `invoke(InputStream inputStream, OutputStream outputStream)` Perform an invocation on the exported object.
    `void` | `prepare()` Initialize this exporter.
    `void` | `setAllowNonSerializable(boolean allowNonSerializable)` Set whether to allow non-serializable types as Hessian arguments and return values.
    `void` | `setDebug(boolean debug)` Set whether Hessian's debug mode should be enabled, logging to this exporter's Commons Logging log.
    `void` | `setRemoteResolver(com.caucho.hessian.io.HessianRemoteResolver remoteResolver)` Specify a custom HessianRemoteResolver to use for resolving remote object references.
    `void` | `setSendCollectionType(boolean sendCollectionType)` Set whether to send the Java collection type for each serialized collection.
    `void` | `setSerializerFactory(com.caucho.hessian.io.SerializerFactory serializerFactory)` Specify the Hessian SerializerFactory to use.

    - ### 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_HESSIAN

          public static final String CONTENT_TYPE_HESSIAN

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### HessianExporter

          public HessianExporter()

  - ### Method Detail

    - #### setSerializerFactory

          public void setSerializerFactory(com.caucho.hessian.io.SerializerFactory serializerFactory)

      Specify the Hessian SerializerFactory to use.

      This will typically be passed in as an inner bean definition of type `com.caucho.hessian.io.SerializerFactory`, with custom bean property values applied.

    - #### setSendCollectionType

          public void setSendCollectionType(boolean sendCollectionType)

      Set whether to send the Java collection type for each serialized collection. Default is "true".

    - #### setAllowNonSerializable

          public void setAllowNonSerializable(boolean allowNonSerializable)

      Set whether to allow non-serializable types as Hessian arguments and return values. Default is "true".

    - #### setRemoteResolver

          public void setRemoteResolver(com.caucho.hessian.io.HessianRemoteResolver remoteResolver)

      Specify a custom HessianRemoteResolver to use for resolving remote object references.

    - #### setDebug

          public void setDebug(boolean debug)

      Set whether Hessian's debug mode should be enabled, logging to this exporter's Commons Logging log. Default is "false".
      See Also:
        `HessianProxyFactory.setDebug(boolean)`

    - #### 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 exporter.

    - #### invoke

          public void invoke(InputStream inputStream,
                             OutputStream outputStream)
                      throws Throwable

      Perform an invocation on the exported object.
      Parameters:
        `inputStream` - the request stream
        `outputStream` - the response stream
      Throws:
        `Throwable` - if invocation failed

    - #### doInvoke

          protected void doInvoke(com.caucho.hessian.server.HessianSkeleton skeleton,
                                  InputStream inputStream,
                                  OutputStream outputStream)
                           throws Throwable

      Actually invoke the skeleton with the given streams.
      Parameters:
        `skeleton` - the skeleton to invoke
        `inputStream` - the request stream
        `outputStream` - the response stream
      Throws:
        `Throwable` - if invocation failed