Class DualSessionWrapper

All Implemented Interfaces:
StateChangeListener, XAResourceHolder, XAStatefulHolder, jakarta.jms.Session, AutoCloseable, Runnable

public class DualSessionWrapper extends AbstractXAResourceHolder implements jakarta.jms.Session, StateChangeListener
JMS Session wrapper that will send calls to either a XASession or to a non-XA Session depending on the calling context.
Author:
lorban
  • Constructor Details

    • DualSessionWrapper

      public DualSessionWrapper(MessagingPooledConnection pooledConnection, boolean transacted, int acknowledgeMode)
  • Method Details

    • getPoolingConnectionFactory

      public PoolingConnectionFactory getPoolingConnectionFactory()
    • getSession

      public jakarta.jms.Session getSession() throws jakarta.jms.JMSException
      Throws:
      jakarta.jms.JMSException
    • getSession

      public jakarta.jms.Session getSession(boolean forceXa) throws jakarta.jms.JMSException
      Throws:
      jakarta.jms.JMSException
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • close

      public void close() throws jakarta.jms.JMSException
      Description copied from interface: XAStatefulHolder
      Close the physical connection that this XAStatefulHolder represents.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface jakarta.jms.Session
      Specified by:
      close in interface XAStatefulHolder
      Throws:
      jakarta.jms.JMSException
    • getLastReleaseDate

      public Date getLastReleaseDate()
      Description copied from interface: XAStatefulHolder
      Get the date at which this object was last released to the pool. This is required to check if it is eligible for discard when the containing pool needs to shrink.
      Specified by:
      getLastReleaseDate in interface XAStatefulHolder
      Returns:
      the date at which this object was last released to the pool or null if it never left the pool.
    • stateChanged

      public void stateChanged(XAStatefulHolder source, int oldState, int newState)
      Description copied from interface: StateChangeListener
      Fired when the internal state of a XAStatefulHolder has changed.
      Specified by:
      stateChanged in interface StateChangeListener
      Parameters:
      source - the XAStatefulHolder changing state.
      oldState - the old state of the XAStatefulHolder.
      newState - the new state of the XAStatefulHolder.
    • stateChanging

      public void stateChanging(XAStatefulHolder source, int currentState, int futureState)
      Description copied from interface: StateChangeListener
      Fired before the internal state of a XAStatefulHolder has changed.
      Specified by:
      stateChanging in interface StateChangeListener
      Parameters:
      source - the XAStatefulHolder changing state.
      currentState - the current state of the XAStatefulHolder.
      futureState - the future state of the XAStatefulHolder.
    • createProducer

      public jakarta.jms.MessageProducer createProducer(jakarta.jms.Destination destination) throws jakarta.jms.JMSException
      Specified by:
      createProducer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createConsumer

      public jakarta.jms.MessageConsumer createConsumer(jakarta.jms.Destination destination) throws jakarta.jms.JMSException
      Specified by:
      createConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createConsumer

      public jakarta.jms.MessageConsumer createConsumer(jakarta.jms.Destination destination, String messageSelector) throws jakarta.jms.JMSException
      Specified by:
      createConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createConsumer

      public jakarta.jms.MessageConsumer createConsumer(jakarta.jms.Destination destination, String messageSelector, boolean noLocal) throws jakarta.jms.JMSException
      Specified by:
      createConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createSharedConsumer

      public jakarta.jms.MessageConsumer createSharedConsumer(jakarta.jms.Topic topic, String sharedSubscriptionName) throws jakarta.jms.JMSException
      Specified by:
      createSharedConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createSharedConsumer

      public jakarta.jms.MessageConsumer createSharedConsumer(jakarta.jms.Topic topic, String name, String messageSelector) throws jakarta.jms.JMSException
      Specified by:
      createSharedConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createDurableSubscriber

      public jakarta.jms.TopicSubscriber createDurableSubscriber(jakarta.jms.Topic topic, String name) throws jakarta.jms.JMSException
      Specified by:
      createDurableSubscriber in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createDurableSubscriber

      public jakarta.jms.TopicSubscriber createDurableSubscriber(jakarta.jms.Topic topic, String name, String messageSelector, boolean noLocal) throws jakarta.jms.JMSException
      Specified by:
      createDurableSubscriber in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createDurableConsumer

      public jakarta.jms.MessageConsumer createDurableConsumer(jakarta.jms.Topic topic, String name) throws jakarta.jms.JMSException
      Specified by:
      createDurableConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createDurableConsumer

      public jakarta.jms.MessageConsumer createDurableConsumer(jakarta.jms.Topic topic, String name, String messageSelector, boolean noLocal) throws jakarta.jms.JMSException
      Specified by:
      createDurableConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createSharedDurableConsumer

      public jakarta.jms.MessageConsumer createSharedDurableConsumer(jakarta.jms.Topic topic, String name) throws jakarta.jms.JMSException
      Specified by:
      createSharedDurableConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createSharedDurableConsumer

      public jakarta.jms.MessageConsumer createSharedDurableConsumer(jakarta.jms.Topic topic, String name, String messageSelector) throws jakarta.jms.JMSException
      Specified by:
      createSharedDurableConsumer in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • getMessageListener

      public jakarta.jms.MessageListener getMessageListener() throws jakarta.jms.JMSException
      Specified by:
      getMessageListener in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • setMessageListener

      public void setMessageListener(jakarta.jms.MessageListener listener) throws jakarta.jms.JMSException
      Specified by:
      setMessageListener in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • run

      public void run()
      Specified by:
      run in interface Runnable
      Specified by:
      run in interface jakarta.jms.Session
    • getXAResource

      public XAResource getXAResource()
      Description copied from interface: XAResourceHolder
      Get the vendor's XAResource implementation of the wrapped resource.
      Specified by:
      getXAResource in interface XAResourceHolder
      Returns:
      the vendor's XAResource implementation.
    • getResourceBean

      public ResourceBean getResourceBean()
      Description copied from interface: XAResourceHolder
      Get the ResourceBean which created this XAResourceHolder.
      Specified by:
      getResourceBean in interface XAResourceHolder
      Returns:
      the ResourceBean which created this XAResourceHolder.
    • getXAResourceHolders

      public List<XAResourceHolder> getXAResourceHolders()
      Description copied from interface: XAStatefulHolder
      Get the list of XAResourceHolders created by this XAStatefulHolder that are still open.

      This method is thread-safe.

      Specified by:
      getXAResourceHolders in interface XAStatefulHolder
      Returns:
      the list of XAResourceHolders created by this XAStatefulHolder that are still open.
    • getConnectionHandle

      public Object getConnectionHandle() throws Exception
      Description copied from interface: XAStatefulHolder
      Create a disposable handler used to drive a pooled instance of XAStatefulHolder.

      This method is thread-safe.

      Specified by:
      getConnectionHandle in interface XAStatefulHolder
      Returns:
      a resource-specific disaposable connection object.
      Throws:
      Exception - a resource-specific exception thrown when the disaposable connection cannot be created.
    • getTransacted

      public boolean getTransacted() throws jakarta.jms.JMSException
      Specified by:
      getTransacted in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • getAcknowledgeMode

      public int getAcknowledgeMode() throws jakarta.jms.JMSException
      Specified by:
      getAcknowledgeMode in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • commit

      public void commit() throws jakarta.jms.JMSException
      Specified by:
      commit in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • rollback

      public void rollback() throws jakarta.jms.JMSException
      Specified by:
      rollback in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • recover

      public void recover() throws jakarta.jms.JMSException
      Specified by:
      recover in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createBrowser

      public jakarta.jms.QueueBrowser createBrowser(jakarta.jms.Queue queue) throws jakarta.jms.JMSException
      Specified by:
      createBrowser in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createBrowser

      public jakarta.jms.QueueBrowser createBrowser(jakarta.jms.Queue queue, String messageSelector) throws jakarta.jms.JMSException
      Specified by:
      createBrowser in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createBytesMessage

      public jakarta.jms.BytesMessage createBytesMessage() throws jakarta.jms.JMSException
      Specified by:
      createBytesMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createMapMessage

      public jakarta.jms.MapMessage createMapMessage() throws jakarta.jms.JMSException
      Specified by:
      createMapMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createMessage

      public jakarta.jms.Message createMessage() throws jakarta.jms.JMSException
      Specified by:
      createMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createObjectMessage

      public jakarta.jms.ObjectMessage createObjectMessage() throws jakarta.jms.JMSException
      Specified by:
      createObjectMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createObjectMessage

      public jakarta.jms.ObjectMessage createObjectMessage(Serializable serializable) throws jakarta.jms.JMSException
      Specified by:
      createObjectMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createStreamMessage

      public jakarta.jms.StreamMessage createStreamMessage() throws jakarta.jms.JMSException
      Specified by:
      createStreamMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createTextMessage

      public jakarta.jms.TextMessage createTextMessage() throws jakarta.jms.JMSException
      Specified by:
      createTextMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createTextMessage

      public jakarta.jms.TextMessage createTextMessage(String text) throws jakarta.jms.JMSException
      Specified by:
      createTextMessage in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createQueue

      public jakarta.jms.Queue createQueue(String queueName) throws jakarta.jms.JMSException
      Specified by:
      createQueue in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createTopic

      public jakarta.jms.Topic createTopic(String topicName) throws jakarta.jms.JMSException
      Specified by:
      createTopic in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createTemporaryQueue

      public jakarta.jms.TemporaryQueue createTemporaryQueue() throws jakarta.jms.JMSException
      Specified by:
      createTemporaryQueue in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • createTemporaryTopic

      public jakarta.jms.TemporaryTopic createTemporaryTopic() throws jakarta.jms.JMSException
      Specified by:
      createTemporaryTopic in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • unsubscribe

      public void unsubscribe(String name) throws jakarta.jms.JMSException
      Specified by:
      unsubscribe in interface jakarta.jms.Session
      Throws:
      jakarta.jms.JMSException
    • enlistResource

      protected void enlistResource() throws jakarta.jms.JMSException
      Enlist this session into the current transaction if automaticEnlistingEnabled = true for this resource. If no transaction is running then this method does nothing.
      Throws:
      jakarta.jms.JMSException