org.springframework.jms.listener.endpoint

## Class JmsMessageEndpointManager

- java.lang.Object
- - org.springframework.jca.endpoint.GenericMessageEndpointManager
  - - org.springframework.jms.listener.endpoint.JmsMessageEndpointManager

- All Implemented Interfaces:
    Aware, BeanNameAware, DisposableBean, InitializingBean, Lifecycle, Phased, SmartLifecycle, MessageListenerContainer

      public class JmsMessageEndpointManager
      extends GenericMessageEndpointManager
      implements BeanNameAware, MessageListenerContainer

  Extension of the generic JCA 1.5 `GenericMessageEndpointManager`, adding JMS-specific support for ActivationSpec configuration.

  Allows for defining a common `JmsActivationSpecConfig` object that gets converted into a provider-specific JCA 1.5 ActivationSpec object for activating the endpoint.

  NOTE: This JCA-based endpoint manager supports standard JMS `MessageListener` endpoints only. It does not support Spring's `SessionAwareMessageListener` variant, simply because the JCA endpoint management contract does not allow for obtaining the current JMS `Session`.

  Since:
    2.5
  Author:
    Juergen Hoeller, Stephane Nicoll
  See Also:
    `MessageListener`, `setActivationSpecConfig(org.springframework.jms.listener.endpoint.JmsActivationSpecConfig)`, `JmsActivationSpecConfig`, `JmsActivationSpecFactory`, `JmsMessageEndpointFactory`

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.context.SmartLifecycle

      `DEFAULT_PHASE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JmsMessageEndpointManager()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Prepares the message endpoint, and automatically activates it if the "autoStartup" flag is set to "true".
    `JmsActivationSpecConfig` | `getActivationSpecConfig()` Return the `JmsActivationSpecConfig` object that this endpoint manager should use for activating its listener.
    `DestinationResolver` | `getDestinationResolver()` Return the `DestinationResolver` to use to resolve destinations by names.
    `MessageConverter` | `getMessageConverter()` Return the `MessageConverter` that can be used to convert `Message`, if any.
    `MessageListener` | `getMessageListener()` Return the JMS MessageListener for this endpoint.
    `QosSettings` | `getReplyQosSettings()` Return the `QosSettings` to use when sending a reply, or `null` if the broker's defaults should be used.
    `boolean` | `isPubSubDomain()` Return whether the Publish/Subscribe domain (`Topics`) is used.
    `boolean` | `isReplyPubSubDomain()` Return whether the reply destination uses Publish/Subscribe domain (`Topics`).
    `void` | `setActivationSpecConfig(JmsActivationSpecConfig activationSpecConfig)` Specify the `JmsActivationSpecConfig` object that this endpoint manager should use for activating its listener.
    `void` | `setActivationSpecFactory(JmsActivationSpecFactory activationSpecFactory)` Set the factory for concrete JCA 1.5 ActivationSpec objects, creating JCA ActivationSpecs based on `JmsActivationSpecConfig` objects.
    `void` | `setBeanName(String beanName)` Set the name of this message endpoint.
    `void` | `setDestinationResolver(DestinationResolver destinationResolver)` Set the DestinationResolver to use for resolving destination names into the JCA 1.5 ActivationSpec "destination" property.
    `void` | `setMessageListener(MessageListener messageListener)` Set the JMS MessageListener for this endpoint.
    `void` | `setTransactionManager(Object transactionManager)` Set the XA transaction manager to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.
    `void` | `setupMessageListener(Object messageListener)` Set up the message listener to use.

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

      `destroy, getActivationSpec, getMessageEndpointFactory, getPhase, getResourceAdapter, isAutoStartup, isRunning, setActivationSpec, setAutoStartup, setMessageEndpointFactory, setPhase, setResourceAdapter, start, stop, stop`

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

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

    - ### Methods inherited from interface org.springframework.context.SmartLifecycle

      `getPhase, isAutoStartup, stop`

    - ### Methods inherited from interface org.springframework.context.Lifecycle

      `isRunning, start, stop`

- - ### Constructor Detail

    - #### JmsMessageEndpointManager

          public JmsMessageEndpointManager()

  - ### Method Detail

    - #### setMessageListener

          public void setMessageListener(MessageListener messageListener)

      Set the JMS MessageListener for this endpoint.

      This is a shortcut for configuring a dedicated JmsMessageEndpointFactory.

      See Also:
        `JmsMessageEndpointFactory.setMessageListener(javax.jms.MessageListener)`

    - #### getMessageListener

          public MessageListener getMessageListener()

      Return the JMS MessageListener for this endpoint.

    - #### setTransactionManager

          public void setTransactionManager(Object transactionManager)

      Set the XA transaction manager to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.

      The passed-in object may be a transaction manager which implements Spring's `TransactionFactory` interface, or a plain `TransactionManager`.

      If no transaction manager is specified, the endpoint invocation will simply not be wrapped in an XA transaction. Consult your resource provider's ActivationSpec documentation for the local transaction options of your particular provider.

      This is a shortcut for configuring a dedicated JmsMessageEndpointFactory.

      See Also:
        `AbstractMessageEndpointFactory.setTransactionManager(java.lang.Object)`

    - #### setActivationSpecFactory

          public void setActivationSpecFactory(@Nullable
                                               JmsActivationSpecFactory activationSpecFactory)

      Set the factory for concrete JCA 1.5 ActivationSpec objects, creating JCA ActivationSpecs based on `JmsActivationSpecConfig` objects.

      This factory is dependent on the concrete JMS provider, e.g. on ActiveMQ. The default implementation simply guesses the ActivationSpec class name from the provider's class name (e.g. "ActiveMQResourceAdapter" → "ActiveMQActivationSpec" in the same package), and populates the ActivationSpec properties as suggested by the JCA 1.5 specification (plus a couple of autodetected vendor-specific properties).

      See Also:
        `DefaultJmsActivationSpecFactory`

    - #### setDestinationResolver

          public void setDestinationResolver(DestinationResolver destinationResolver)

      Set the DestinationResolver to use for resolving destination names into the JCA 1.5 ActivationSpec "destination" property.

      If not specified, destination names will simply be passed in as Strings. If specified, destination names will be resolved into Destination objects first.

      Note that a DestinationResolver is usually specified on the JmsActivationSpecFactory (see `StandardJmsActivationSpecFactory.setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver)`). This is simply a shortcut for parameterizing the default JmsActivationSpecFactory; it will replace any custom JmsActivationSpecFactory that might have been set before.

      See Also:
        `StandardJmsActivationSpecFactory.setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver)`

    - #### setActivationSpecConfig

          public void setActivationSpecConfig(@Nullable
                                              JmsActivationSpecConfig activationSpecConfig)

      Specify the `JmsActivationSpecConfig` object that this endpoint manager should use for activating its listener.

      This config object will be turned into a concrete JCA 1.5 ActivationSpec object through a `JmsActivationSpecFactory`.

    - #### getActivationSpecConfig

          @Nullable
          public JmsActivationSpecConfig getActivationSpecConfig()

      Return the `JmsActivationSpecConfig` object that this endpoint manager should use for activating its listener. Return `null` if none is set.

    - #### setBeanName

          public void setBeanName(String beanName)

      Set the name of this message endpoint. Populated with the bean name automatically when defined within Spring's bean factory.
      Specified by:
        `setBeanName` in interface `BeanNameAware`
      Parameters:
        `beanName` - the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use the `BeanFactoryUtils.originalBeanName(String)` method to extract the original bean name (without suffix), if desired.

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws ResourceException

      Description copied from class: `GenericMessageEndpointManager`
      Prepares the message endpoint, and automatically activates it if the "autoStartup" flag is set to "true".
      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`
      Overrides:
        `afterPropertiesSet` in class `GenericMessageEndpointManager`
      Throws:
        `ResourceException`

    - #### setupMessageListener

          public void setupMessageListener(Object messageListener)

      Description copied from interface: `MessageListenerContainer`
      Set up the message listener to use. Throws an `IllegalArgumentException` if that message listener type is not supported.
      Specified by:
        `setupMessageListener` in interface `MessageListenerContainer`

    - #### getMessageConverter

          @Nullable
          public MessageConverter getMessageConverter()

      Description copied from interface: `MessageListenerContainer`
      Return the `MessageConverter` that can be used to convert `Message`, if any.
      Specified by:
        `getMessageConverter` in interface `MessageListenerContainer`

    - #### getDestinationResolver

          @Nullable
          public DestinationResolver getDestinationResolver()

      Description copied from interface: `MessageListenerContainer`
      Return the `DestinationResolver` to use to resolve destinations by names.
      Specified by:
        `getDestinationResolver` in interface `MessageListenerContainer`

    - #### isPubSubDomain

          public boolean isPubSubDomain()

      Description copied from interface: `MessageListenerContainer`
      Return whether the Publish/Subscribe domain (`Topics`) is used. Otherwise, the Point-to-Point domain (`Queues`) is used.
      Specified by:
        `isPubSubDomain` in interface `MessageListenerContainer`

    - #### isReplyPubSubDomain

          public boolean isReplyPubSubDomain()

      Description copied from interface: `MessageListenerContainer`
      Return whether the reply destination uses Publish/Subscribe domain (`Topics`). Otherwise, the Point-to-Point domain (`Queues`) is used.

      By default, the value is identical to `MessageListenerContainer.isPubSubDomain()`.

      Specified by:
        `isReplyPubSubDomain` in interface `MessageListenerContainer`

    - #### getReplyQosSettings

          @Nullable
          public QosSettings getReplyQosSettings()

      Description copied from interface: `MessageListenerContainer`
      Return the `QosSettings` to use when sending a reply, or `null` if the broker's defaults should be used.
      Specified by:
        `getReplyQosSettings` in interface `MessageListenerContainer`