org.springframework.jms.support

Class JmsAccessor

  • java.lang.Object
    • org.springframework.jms.support.JmsAccessor
    • Field Detail

      • logger

        protected final Log logger
        Logger available to subclasses.
    • Constructor Detail

      • JmsAccessor

        public JmsAccessor()
    • Method Detail

      • obtainConnectionFactory

        protected final ConnectionFactory obtainConnectionFactory()
        Obtain the ConnectionFactory for actual use.
        Returns:
        the ConnectionFactory (never null)
        Throws:
        java.lang.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 JMS Session. 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 Java 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:
        Connection.createSession(boolean, int)
      • isSessionTransacted

        public boolean isSessionTransacted()
        Return whether the JMS sessions used by this accessor are supposed to be transacted.
        See Also:
        setSessionTransacted(boolean)
      • setSessionAcknowledgeMode

        public void setSessionAcknowledgeMode(int sessionAcknowledgeMode)
        Set the JMS acknowledgement mode that is used when creating a JMS Session 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:
        Session.AUTO_ACKNOWLEDGE, Session.CLIENT_ACKNOWLEDGE, Session.DUPS_OK_ACKNOWLEDGE, Connection.createSession(boolean, int)
      • getSessionAcknowledgeMode

        public int getSessionAcknowledgeMode()
        Return the acknowledgement mode for JMS sessions.
      • afterPropertiesSet

        public void afterPropertiesSet()
        Description copied from interface: InitializingBean
        Invoked by the containing BeanFactory after it has set all bean properties and satisfied BeanFactoryAware, 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 interface InitializingBean
      • isClientAcknowledge

        protected boolean isClientAcknowledge(Session session)
                                       throws JMSException
        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:
        Session.getAcknowledgeMode(), Session.CLIENT_ACKNOWLEDGE