Class PooledConnection

java.lang.Object
org.apache.activemq.jms.pool.PooledConnection
All Implemented Interfaces:
jakarta.jms.Connection, jakarta.jms.QueueConnection, jakarta.jms.TopicConnection, AutoCloseable

public class PooledConnection extends Object implements jakarta.jms.TopicConnection, jakarta.jms.QueueConnection
Represents a proxy Connection which is-a TopicConnection and QueueConnection which is pooled and on close() will return its reference to the ConnectionPool backing it. NOTE this implementation is only intended for use when sending messages. It does not deal with pooling of consumers; for that look at a library like Jencks such as in this example
  • Field Details

  • Constructor Details

    • PooledConnection

      public PooledConnection(ConnectionPool pool)
      Creates a new PooledConnection instance that uses the given ConnectionPool to create and manage its resources. The ConnectionPool instance can be shared amongst many PooledConnection instances.
      Parameters:
      pool - The connection and pool manager backing this proxy connection object.
  • Method Details

    • newInstance

      public PooledConnection newInstance()
      Factory method to create a new instance.
    • close

      public void close() throws jakarta.jms.JMSException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • start

      public void start() throws jakarta.jms.JMSException
      Specified by:
      start in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • stop

      public void stop() throws jakarta.jms.JMSException
      Specified by:
      stop in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • createConnectionConsumer

      public jakarta.jms.ConnectionConsumer createConnectionConsumer(jakarta.jms.Destination destination, String selector, jakarta.jms.ServerSessionPool serverSessionPool, int maxMessages) throws jakarta.jms.JMSException
      Specified by:
      createConnectionConsumer in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • createConnectionConsumer

      public jakarta.jms.ConnectionConsumer createConnectionConsumer(jakarta.jms.Topic topic, String s, jakarta.jms.ServerSessionPool serverSessionPool, int maxMessages) throws jakarta.jms.JMSException
      Specified by:
      createConnectionConsumer in interface jakarta.jms.TopicConnection
      Throws:
      jakarta.jms.JMSException
    • createDurableConnectionConsumer

      public jakarta.jms.ConnectionConsumer createDurableConnectionConsumer(jakarta.jms.Topic topic, String selector, String s1, jakarta.jms.ServerSessionPool serverSessionPool, int i) throws jakarta.jms.JMSException
      Specified by:
      createDurableConnectionConsumer in interface jakarta.jms.Connection
      Specified by:
      createDurableConnectionConsumer in interface jakarta.jms.TopicConnection
      Throws:
      jakarta.jms.JMSException
    • getClientID

      public String getClientID() throws jakarta.jms.JMSException
      Specified by:
      getClientID in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • getExceptionListener

      public jakarta.jms.ExceptionListener getExceptionListener() throws jakarta.jms.JMSException
      Specified by:
      getExceptionListener in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • getMetaData

      public jakarta.jms.ConnectionMetaData getMetaData() throws jakarta.jms.JMSException
      Specified by:
      getMetaData in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • setExceptionListener

      public void setExceptionListener(jakarta.jms.ExceptionListener exceptionListener) throws jakarta.jms.JMSException
      Specified by:
      setExceptionListener in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • setClientID

      public void setClientID(String clientID) throws jakarta.jms.JMSException
      Specified by:
      setClientID in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • createConnectionConsumer

      public jakarta.jms.ConnectionConsumer createConnectionConsumer(jakarta.jms.Queue queue, String selector, jakarta.jms.ServerSessionPool serverSessionPool, int maxMessages) throws jakarta.jms.JMSException
      Specified by:
      createConnectionConsumer in interface jakarta.jms.QueueConnection
      Throws:
      jakarta.jms.JMSException
    • createQueueSession

      public jakarta.jms.QueueSession createQueueSession(boolean transacted, int ackMode) throws jakarta.jms.JMSException
      Specified by:
      createQueueSession in interface jakarta.jms.QueueConnection
      Throws:
      jakarta.jms.JMSException
    • createTopicSession

      public jakarta.jms.TopicSession createTopicSession(boolean transacted, int ackMode) throws jakarta.jms.JMSException
      Specified by:
      createTopicSession in interface jakarta.jms.TopicConnection
      Throws:
      jakarta.jms.JMSException
    • createSession

      public jakarta.jms.Session createSession() throws jakarta.jms.JMSException
      Creates a Session object.
      Specified by:
      createSession in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException - if the Connection object fails to create a session due to some internal error or lack of support for the specific transaction and acknowledgement mode.
      Since:
      2.0
    • createSession

      public jakarta.jms.Session createSession(int sessionMode) throws jakarta.jms.JMSException
      Creates a Session object.
      Specified by:
      createSession in interface jakarta.jms.Connection
      Parameters:
      acknowledgeMode - indicates whether the consumer or the client will acknowledge any messages it receives; ignored if the session is transacted. Legal values are Session.AUTO_ACKNOWLEDGE, Session.CLIENT_ACKNOWLEDGE, and Session.DUPS_OK_ACKNOWLEDGE.
      Returns:
      a newly created session
      Throws:
      jakarta.jms.JMSException - if the Connection object fails to create a session due to some internal error or lack of support for the specific transaction and acknowledgement mode.
      Since:
      2.0
      See Also:
      • Session.AUTO_ACKNOWLEDGE
      • Session.CLIENT_ACKNOWLEDGE
      • Session.DUPS_OK_ACKNOWLEDGE
    • createSession

      public jakarta.jms.Session createSession(boolean transacted, int ackMode) throws jakarta.jms.JMSException
      Specified by:
      createSession in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
    • createSharedConnectionConsumer

      public jakarta.jms.ConnectionConsumer createSharedConnectionConsumer(jakarta.jms.Topic topic, String subscriptionName, String messageSelector, jakarta.jms.ServerSessionPool sessionPool, int maxMessages) throws jakarta.jms.JMSException
      Specified by:
      createSharedConnectionConsumer in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
      Since:
      2.0
      See Also:
      • ConnectionConsumer
    • createSharedDurableConnectionConsumer

      public jakarta.jms.ConnectionConsumer createSharedDurableConnectionConsumer(jakarta.jms.Topic topic, String subscriptionName, String messageSelector, jakarta.jms.ServerSessionPool sessionPool, int maxMessages) throws jakarta.jms.JMSException
      Specified by:
      createSharedDurableConnectionConsumer in interface jakarta.jms.Connection
      Throws:
      jakarta.jms.JMSException
      Since:
      2.0
      See Also:
      • ConnectionConsumer
    • onTemporaryQueueCreate

      public void onTemporaryQueueCreate(jakarta.jms.TemporaryQueue tempQueue)
    • onTemporaryTopicCreate

      public void onTemporaryTopicCreate(jakarta.jms.TemporaryTopic tempTopic)
    • onSessionClosed

      public void onSessionClosed(PooledSession session)
    • getConnection

      public jakarta.jms.Connection getConnection() throws jakarta.jms.JMSException
      Throws:
      jakarta.jms.JMSException
    • assertNotClosed

      protected void assertNotClosed() throws jakarta.jms.IllegalStateException
      Throws:
      jakarta.jms.IllegalStateException
    • createSession

      protected jakarta.jms.Session createSession(SessionKey key) throws jakarta.jms.JMSException
      Throws:
      jakarta.jms.JMSException
    • toString

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

      protected void cleanupConnectionTemporaryDestinations()
      Remove all of the temporary destinations created for this connection. This is important since the underlying connection may be reused over a long period of time, accumulating all of the temporary destinations from each use. However, from the perspective of the lifecycle from the client's view, close() closes the connection and, therefore, deletes all of the temporary destinations created.
    • cleanupAllLoanedSessions

      protected void cleanupAllLoanedSessions()
      The PooledSession tracks all Sessions that it created and now we close them. Closing the PooledSession will return the internal Session to the Pool of Session after cleaning up all the resources that the Session had allocated for this PooledConnection.
    • getNumSessions

      public int getNumSessions()
      Returns:
      the total number of Pooled session including idle sessions that are not currently loaned out to any client.
    • getNumActiveSessions

      public int getNumActiveSessions()
      Returns:
      the number of Sessions that are currently checked out of this Connection's session pool.
    • getNumtIdleSessions

      public int getNumtIdleSessions()
      Returns:
      the number of Sessions that are idle in this Connection's sessions pool.