Class DefaultJmsActivationSpecFactory
- All Implemented Interfaces:
JmsActivationSpecFactory
JmsActivationSpecFactory
interface.
Supports the standard JMS properties as defined by the JCA 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!
- Since:
- 2.5
- Author:
- Juergen Hoeller
- See Also:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
applyAcknowledgeMode
(BeanWrapper bw, int ackMode) This implementation mapsSESSION_TRANSACTED
onto an ActivationSpec property named "useRAManagedTransaction", if available (following ActiveMQ's naming conventions).protected Class<?>
This implementation guesses the ActivationSpec class name from the provider's class name: e.g.protected void
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).Methods inherited from class org.springframework.jms.listener.endpoint.StandardJmsActivationSpecFactory
createActivationSpec, getDestinationResolver, setActivationSpecClass, setDefaultProperties, setDestinationResolver
-
Field Details
-
logger
Logger available to subclasses.
-
-
Constructor Details
-
DefaultJmsActivationSpecFactory
public DefaultJmsActivationSpecFactory()
-
-
Method Details
-
determineActivationSpecClass
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.- Overrides:
determineActivationSpecClass
in classStandardJmsActivationSpecFactory
- Parameters:
adapter
- the ResourceAdapter to check- Returns:
- the corresponding ActivationSpec class, or
null
if not determinable - See Also:
-
populateActivationSpecProperties
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).- Overrides:
populateActivationSpecProperties
in classStandardJmsActivationSpecFactory
- Parameters:
bw
- the BeanWrapper wrapping the ActivationSpec objectconfig
- the configured object holding common JMS settings
-
applyAcknowledgeMode
This implementation mapsSESSION_TRANSACTED
onto an ActivationSpec property named "useRAManagedTransaction", if available (following ActiveMQ's naming conventions).- Overrides:
applyAcknowledgeMode
in classStandardJmsActivationSpecFactory
- Parameters:
bw
- the BeanWrapper wrapping the ActivationSpec objectackMode
- the configured acknowledgment mode (according to the constants inSession
)- See Also:
-