org.springframework.jca.endpoint

## Class GenericMessageEndpointFactory

- java.lang.Object
- - org.springframework.jca.endpoint.AbstractMessageEndpointFactory
  - - org.springframework.jca.endpoint.GenericMessageEndpointFactory

- All Implemented Interfaces:
    MessageEndpointFactory, Aware, BeanNameAware

      public class GenericMessageEndpointFactory
      extends AbstractMessageEndpointFactory

  Generic implementation of the JCA 1.7 `MessageEndpointFactory` interface, providing transaction management capabilities for any kind of message listener object (e.g. `MessageListener` objects or `MessageListener` objects).

  Uses AOP proxies for concrete endpoint instances, simply wrapping the specified message listener object and exposing all of its implemented interfaces on the endpoint instance.

  Typically used with Spring's `GenericMessageEndpointManager`, but not tied to it. As a consequence, this endpoint factory could also be used with programmatic endpoint management on a native `ResourceAdapter` instance.

  Since:
    2.5
  Author:
    Juergen Hoeller
  See Also:
    `setMessageListener(java.lang.Object)`, `AbstractMessageEndpointFactory.setTransactionManager(java.lang.Object)`, `GenericMessageEndpointManager`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `GenericMessageEndpointFactory.InternalResourceException` Internal exception thrown when a ResourceException has been encountered during the endpoint invocation.

    - ### Nested classes/interfaces inherited from class org.springframework.jca.endpoint.AbstractMessageEndpointFactory

      `AbstractMessageEndpointFactory.AbstractMessageEndpoint`

  - ### Field Summary

    - ### Fields inherited from class org.springframework.jca.endpoint.AbstractMessageEndpointFactory

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GenericMessageEndpointFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `MessageEndpoint` | `createEndpoint(XAResource xaResource)` Wrap each concrete endpoint instance with an AOP proxy, exposing the message listener's interfaces as well as the endpoint SPI through an AOP introduction.
    `protected AbstractMessageEndpointFactory.AbstractMessageEndpoint` | `createEndpointInternal()` Creates a concrete generic message endpoint, internal to this factory.
    `protected Object` | `getMessageListener()` Return the message listener object for this endpoint.
    `void` | `setMessageListener(Object messageListener)` Specify the message listener object that the endpoint should expose (e.g.

    - ### Methods inherited from class org.springframework.jca.endpoint.AbstractMessageEndpointFactory

      `createEndpoint, getActivationName, getEndpointClass, isDeliveryTransacted, setBeanName, setTransactionFactory, setTransactionManager, setTransactionName, setTransactionTimeout`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### GenericMessageEndpointFactory

          public GenericMessageEndpointFactory()

  - ### Method Detail

    - #### setMessageListener

          public void setMessageListener(Object messageListener)

      Specify the message listener object that the endpoint should expose (e.g. a `MessageListener` objects or `MessageListener` implementation).

    - #### getMessageListener

          protected Object getMessageListener()

      Return the message listener object for this endpoint.
      Since:
        5.0

    - #### createEndpoint

          public MessageEndpoint createEndpoint(XAResource xaResource)
                                         throws UnavailableException

      Wrap each concrete endpoint instance with an AOP proxy, exposing the message listener's interfaces as well as the endpoint SPI through an AOP introduction.
      Specified by:
        `createEndpoint` in interface `MessageEndpointFactory`
      Overrides:
        `createEndpoint` in class `AbstractMessageEndpointFactory`
      Throws:
        `UnavailableException`

    - #### createEndpointInternal

          protected AbstractMessageEndpointFactory.AbstractMessageEndpoint createEndpointInternal()
                                                                                           throws UnavailableException

      Creates a concrete generic message endpoint, internal to this factory.
      Specified by:
        `createEndpointInternal` in class `AbstractMessageEndpointFactory`
      Returns:
        the actual endpoint instance (never `null`)
      Throws:
        `UnavailableException` - if no endpoint is available at present