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.5GenericMessageEndpointManager
, 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'sSessionAwareMessageListener
variant, simply because the JCA endpoint management contract does not allow for obtaining the current JMSSession
.- Since:
- 2.5
- Author:
- Juergen Hoeller, Stephane Nicoll
- See Also:
MessageListener
,setActivationSpecConfig(org.springframework.jms.listener.endpoint.JmsActivationSpecConfig)
,JmsActivationSpecConfig
,JmsActivationSpecFactory
,JmsMessageEndpointFactory
Constructor Summary
Constructors Constructor Description JmsMessageEndpointManager()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
Prepares the message endpoint, and automatically activates it if the "autoStartup" flag is set to "true".JmsActivationSpecConfig
getActivationSpecConfig()
Return theJmsActivationSpecConfig
object that this endpoint manager should use for activating its listener.DestinationResolver
getDestinationResolver()
Return theDestinationResolver
to use to resolve destinations by names.MessageConverter
getMessageConverter()
Return theMessageConverter
that can be used to convertMessage
, if any.MessageListener
getMessageListener()
Return the JMS MessageListener for this endpoint.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 theJmsActivationSpecConfig
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 onJmsActivationSpecConfig
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)
Setup 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
isAutoStartup, 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.
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 plainTransactionManager
.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.
setActivationSpecFactory
public void setActivationSpecFactory(JmsActivationSpecFactory activationSpecFactory)
Set the factory for concrete JCA 1.5 ActivationSpec objects, creating JCA ActivationSpecs based onJmsActivationSpecConfig
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.
setActivationSpecConfig
public void setActivationSpecConfig(JmsActivationSpecConfig activationSpecConfig)
Specify theJmsActivationSpecConfig
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
public JmsActivationSpecConfig getActivationSpecConfig()
Return theJmsActivationSpecConfig
object that this endpoint manager should use for activating its listener. Returnnull
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 interfaceBeanNameAware
- 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 theBeanFactoryUtils.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 interfaceInitializingBean
- Overrides:
afterPropertiesSet
in classGenericMessageEndpointManager
- Throws:
ResourceException
setupMessageListener
public void setupMessageListener(Object messageListener)
Description copied from interface:MessageListenerContainer
Setup the message listener to use. Throws anIllegalArgumentException
if that message listener type is not supported.- Specified by:
setupMessageListener
in interfaceMessageListenerContainer
getMessageConverter
public MessageConverter getMessageConverter()
Description copied from interface:MessageListenerContainer
Return theMessageConverter
that can be used to convertMessage
, if any.- Specified by:
getMessageConverter
in interfaceMessageListenerContainer
getDestinationResolver
public DestinationResolver getDestinationResolver()
Description copied from interface:MessageListenerContainer
Return theDestinationResolver
to use to resolve destinations by names.- Specified by:
getDestinationResolver
in interfaceMessageListenerContainer
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 interfaceMessageListenerContainer
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 interfaceMessageListenerContainer