org.springframework.jms.listener.endpoint
Class JmsMessageEndpointManager

java.lang.Object
  extended by org.springframework.jca.endpoint.GenericMessageEndpointManager
      extended by org.springframework.jms.listener.endpoint.JmsMessageEndpointManager
All Implemented Interfaces:
DisposableBean, InitializingBean, Lifecycle, Phased, SmartLifecycle

public class JmsMessageEndpointManager
extends GenericMessageEndpointManager

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
See Also:
MessageListener, setActivationSpecConfig(org.springframework.jms.listener.endpoint.JmsActivationSpecConfig), JmsActivationSpecConfig, JmsActivationSpecFactory, JmsMessageEndpointFactory

Constructor Summary
JmsMessageEndpointManager()
           
 
Method Summary
 void afterPropertiesSet()
          Prepares the message endpoint, and automatically activates it if the "autoStartup" flag is set to "true".
 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 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.
 
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
 

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)

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(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(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.


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