public class

DefaultJmsActivationSpecFactory

extends StandardJmsActivationSpecFactory
java.lang.Object
   ↳ org.springframework.jms.listener.endpoint.StandardJmsActivationSpecFactory
     ↳ org.springframework.jms.listener.endpoint.DefaultJmsActivationSpecFactory

Class Overview

Default implementation of the JmsActivationSpecFactory interface. Supports the standard JMS properties as defined by the JMS 1.5 specification, as well as Spring's extended "maxConcurrency" and "prefetchSize" settings through autodetection of well-known vendor-specific provider properties.

An ActivationSpec factory is effectively dependent on the concrete JMS provider, e.g. on ActiveMQ. This default implementation simply guesses the ActivationSpec class name from the provider's class name ("ActiveMQResourceAdapter" -> "ActiveMQActivationSpec" in the same package, or "ActivationSpecImpl" in the same package as the ResourceAdapter class), and populates the ActivationSpec properties as suggested by the JCA 1.5 specification (Appendix B). Specify the 'activationSpecClass' property explicitly if these default naming rules do not apply.

Note: ActiveMQ, JORAM and WebSphere are supported in terms of extended settings (through the detection of their bean property naming conventions). The default ActivationSpec class detection rules may apply to other JMS providers as well.

Thanks to Agim Emruli and Laurie Chan for pointing out WebSphere MQ settings and contributing corresponding tests!

Summary

Fields
protected final Log logger Logger available to subclasses
Public Constructors
DefaultJmsActivationSpecFactory()
Protected Methods
void applyAcknowledgeMode(BeanWrapper bw, int ackMode)
This implementation maps SESSION_TRANSACTED onto an ActivationSpec property named "useRAManagedTransaction", if available (following ActiveMQ's naming conventions).
Class determineActivationSpecClass(ResourceAdapter adapter)
This implementation guesses the ActivationSpec class name from the provider's class name: e.g.
void populateActivationSpecProperties(BeanWrapper bw, JmsActivationSpecConfig config)
This implementation supports Spring's extended "maxConcurrency" and "prefetchSize" settings through detecting corresponding ActivationSpec properties: "maxSessions"/"maxNumberOfWorks" and "maxMessagesPerSessions"/"maxMessages", respectively (following ActiveMQ's and JORAM's naming conventions).
[Expand]
Inherited Methods
From class org.springframework.jms.listener.endpoint.StandardJmsActivationSpecFactory
From class java.lang.Object
From interface org.springframework.jms.listener.endpoint.JmsActivationSpecFactory

Fields

protected final Log logger

Logger available to subclasses

Public Constructors

public DefaultJmsActivationSpecFactory ()

Protected Methods

protected void applyAcknowledgeMode (BeanWrapper bw, int ackMode)

This implementation maps SESSION_TRANSACTED onto an ActivationSpec property named "useRAManagedTransaction", if available (following ActiveMQ's naming conventions).

Parameters
bw the BeanWrapper wrapping the ActivationSpec object
ackMode the configured acknowledge mode (according to the constants in javax.jms.Session

protected Class determineActivationSpecClass (ResourceAdapter adapter)

This implementation guesses the ActivationSpec class name from the provider's class name: e.g. "ActiveMQResourceAdapter" -> "ActiveMQActivationSpec" in the same package, or a class named "ActivationSpecImpl" in the same package as the ResourceAdapter class.

Parameters
adapter the ResourceAdapter to check
Returns
  • the corresponding ActivationSpec class, or null if not determinable

protected void populateActivationSpecProperties (BeanWrapper bw, JmsActivationSpecConfig config)

This implementation supports Spring's extended "maxConcurrency" and "prefetchSize" settings through detecting corresponding ActivationSpec properties: "maxSessions"/"maxNumberOfWorks" and "maxMessagesPerSessions"/"maxMessages", respectively (following ActiveMQ's and JORAM's naming conventions).

Parameters
bw the BeanWrapper wrapping the ActivationSpec object
config the configured object holding common JMS settings