Class JmsAccessor
- All Implemented Interfaces:
InitializingBean
- Direct Known Subclasses:
JmsDestinationAccessor
JmsTemplate
and other
JMS-accessing gateway helpers, defining common properties such as the
JMS ConnectionFactory
to operate on. The subclass
JmsDestinationAccessor
adds further, destination-related properties.
Not intended to be used directly.
See JmsTemplate
.
- Since:
- 1.2
- Author:
- Juergen Hoeller
- See Also:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.protected JmsException
Convert the specified checkedJMSException
to a Spring runtimeJmsException
equivalent.protected Connection
Create a JMS Connection via this template's ConnectionFactory.protected Session
createSession
(Connection con) Create a JMS Session for the given Connection.Return the ConnectionFactory that this accessor uses for obtaining JMSConnections
.int
Return the acknowledgement mode for JMSsessions
.protected boolean
isClientAcknowledge
(Session session) Determine whether the given Session is in client acknowledge mode.boolean
Return whether the JMSsessions
used by this accessor are supposed to be transacted.protected final ConnectionFactory
Obtain the ConnectionFactory for actual use.void
setConnectionFactory
(ConnectionFactory connectionFactory) Set the ConnectionFactory to use for obtaining JMSConnections
.void
setSessionAcknowledgeMode
(int sessionAcknowledgeMode) Set the JMS acknowledgement mode that is used when creating a JMSSession
to send a message.void
setSessionAcknowledgeModeName
(String constantName) Set the JMS acknowledgement mode by the name of the corresponding constant in the JMSSession
interface, e.g.void
setSessionTransacted
(boolean sessionTransacted) Set the transaction mode that is used when creating a JMSSession
.
-
Field Details
-
logger
Logger available to subclasses.
-
-
Constructor Details
-
JmsAccessor
public JmsAccessor()
-
-
Method Details
-
setConnectionFactory
Set the ConnectionFactory to use for obtaining JMSConnections
. -
getConnectionFactory
Return the ConnectionFactory that this accessor uses for obtaining JMSConnections
. -
obtainConnectionFactory
Obtain the ConnectionFactory for actual use.- Returns:
- the ConnectionFactory (never
null
) - Throws:
IllegalStateException
- in case of no ConnectionFactory set- Since:
- 5.0
-
setSessionTransacted
public void setSessionTransacted(boolean sessionTransacted) Set the transaction mode that is used when creating a JMSSession
. Default is "false".Note that within a JTA transaction, the parameters passed to
create(Queue/Topic)Session(boolean transacted, int acknowledgeMode)
method are not taken into account. Depending on the Jakarta EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since the accessor operates on an existing JMS Session in this case.Setting this flag to "true" will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction.
- See Also:
-
isSessionTransacted
public boolean isSessionTransacted()Return whether the JMSsessions
used by this accessor are supposed to be transacted.- See Also:
-
setSessionAcknowledgeModeName
Set the JMS acknowledgement mode by the name of the corresponding constant in the JMSSession
interface, e.g. "CLIENT_ACKNOWLEDGE".If you want to use vendor-specific extensions to the acknowledgment mode, use
setSessionAcknowledgeMode(int)
instead.- Parameters:
constantName
- the name of theSession
acknowledge mode constant- See Also:
-
setSessionAcknowledgeMode
public void setSessionAcknowledgeMode(int sessionAcknowledgeMode) Set the JMS acknowledgement mode that is used when creating a JMSSession
to send a message.Default is
Session.AUTO_ACKNOWLEDGE
.Vendor-specific extensions to the acknowledgment mode can be set here as well.
Note that inside an EJB, the parameters to the
create(Queue/Topic)Session(boolean transacted, int acknowledgeMode)
method are not taken into account. Depending on the transaction context in the EJB, the container makes its own decisions on these values. See section 17.3.5 of the EJB spec.- Parameters:
sessionAcknowledgeMode
- the acknowledgement mode constant- See Also:
-
getSessionAcknowledgeMode
public int getSessionAcknowledgeMode()Return the acknowledgement mode for JMSsessions
. -
afterPropertiesSet
public void afterPropertiesSet()Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
convertJmsAccessException
Convert the specified checkedJMSException
to a Spring runtimeJmsException
equivalent.The default implementation delegates to the
JmsUtils.convertJmsAccessException(jakarta.jms.JMSException)
method.- Parameters:
ex
- the original checkedJMSException
to convert- Returns:
- the Spring runtime
JmsException
wrappingex
- See Also:
-
createConnection
Create a JMS Connection via this template's ConnectionFactory.This implementation uses JMS 1.1 API.
- Returns:
- the new JMS Connection
- Throws:
JMSException
- if thrown by JMS API methods- See Also:
-
createSession
Create a JMS Session for the given Connection.This implementation uses JMS 1.1 API.
- Parameters:
con
- the JMS Connection to create a Session for- Returns:
- the new JMS Session
- Throws:
JMSException
- if thrown by JMS API methods- See Also:
-
isClientAcknowledge
Determine whether the given Session is in client acknowledge mode.This implementation uses JMS 1.1 API.
- Parameters:
session
- the JMS Session to check- Returns:
- whether the given Session is in client acknowledge mode
- Throws:
JMSException
- if thrown by JMS API methods- See Also:
-