public class JmsMessageEndpointManager extends GenericMessageEndpointManager implements BeanNameAware, MessageListenerContainer
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
javax.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 javax.jms.Session
.
javax.jms.MessageListener
,
setActivationSpecConfig(org.springframework.jms.listener.endpoint.JmsActivationSpecConfig)
,
JmsActivationSpecConfig
,
JmsActivationSpecFactory
,
JmsMessageEndpointFactory
Modifier and Type | Field and Description |
---|---|
private JmsActivationSpecConfig |
activationSpecConfig |
private JmsActivationSpecFactory |
activationSpecFactory |
private JmsMessageEndpointFactory |
endpointFactory |
private boolean |
messageListenerSet |
Constructor and Description |
---|
JmsMessageEndpointManager() |
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 javax.jms.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(java.lang.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(java.lang.Object transactionManager)
Set the XA transaction manager to use for wrapping endpoint
invocations, enlisting the endpoint resource in each such transaction.
|
void |
setupMessageListener(java.lang.Object messageListener)
Setup the message listener to use.
|
destroy, getActivationSpec, getMessageEndpointFactory, getPhase, getResourceAdapter, isAutoStartup, isRunning, setActivationSpec, setAutoStartup, setMessageEndpointFactory, setPhase, setResourceAdapter, start, stop, stop
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
isAutoStartup, stop
private final JmsMessageEndpointFactory endpointFactory
private boolean messageListenerSet
private JmsActivationSpecFactory activationSpecFactory
@Nullable private JmsActivationSpecConfig activationSpecConfig
public void setMessageListener(MessageListener messageListener)
This is a shortcut for configuring a dedicated JmsMessageEndpointFactory.
public MessageListener getMessageListener()
public void setTransactionManager(java.lang.Object transactionManager)
The passed-in object may be a transaction manager which implements
Spring's TransactionFactory
interface, or a plain javax.transaction.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.
public void setActivationSpecFactory(@Nullable JmsActivationSpecFactory activationSpecFactory)
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).
DefaultJmsActivationSpecFactory
public void setDestinationResolver(DestinationResolver destinationResolver)
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.
public void setActivationSpecConfig(@Nullable JmsActivationSpecConfig activationSpecConfig)
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
.
@Nullable public JmsActivationSpecConfig getActivationSpecConfig()
JmsActivationSpecConfig
object that this endpoint manager
should use for activating its listener. Return null
if none is set.public void setBeanName(java.lang.String beanName)
setBeanName
in interface BeanNameAware
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.public void afterPropertiesSet() throws ResourceException
GenericMessageEndpointManager
afterPropertiesSet
in interface InitializingBean
afterPropertiesSet
in class GenericMessageEndpointManager
ResourceException
public void setupMessageListener(java.lang.Object messageListener)
MessageListenerContainer
IllegalArgumentException
if that message listener type is not supported.setupMessageListener
in interface MessageListenerContainer
@Nullable public MessageConverter getMessageConverter()
MessageListenerContainer
MessageConverter
that can be used to
convert javax.jms.Message
, if any.getMessageConverter
in interface MessageListenerContainer
@Nullable public DestinationResolver getDestinationResolver()
MessageListenerContainer
DestinationResolver
to use to resolve
destinations by names.getDestinationResolver
in interface MessageListenerContainer
public boolean isPubSubDomain()
MessageListenerContainer
Topics
) is used.
Otherwise, the Point-to-Point domain (Queues
) is used.isPubSubDomain
in interface MessageListenerContainer
public boolean isReplyPubSubDomain()
MessageListenerContainer
Topics
). Otherwise, the Point-to-Point domain
(Queues
) is used.
By default, the value is identical to MessageListenerContainer.isPubSubDomain()
.
isReplyPubSubDomain
in interface MessageListenerContainer
@Nullable public QosSettings getReplyQosSettings()
MessageListenerContainer
QosSettings
to use when sending a reply,
or null
if the broker's defaults should be used.getReplyQosSettings
in interface MessageListenerContainer