Class PooledConnection

  • All Implemented Interfaces:
    AutoCloseable, javax.jms.Connection, javax.jms.QueueConnection, javax.jms.TopicConnection

    public class PooledConnection
    extends Object
    implements javax.jms.TopicConnection, javax.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
    • Constructor Detail

      • 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 Detail

      • newInstance

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        public javax.jms.Session createSession()
                                        throws javax.jms.JMSException
        Creates a Session object.
        Specified by:
        createSession in interface javax.jms.Connection
        Throws:
        javax.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 javax.jms.Session createSession​(int sessionMode)
                                        throws javax.jms.JMSException
        Creates a Session object.
        Specified by:
        createSession in interface javax.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:
        javax.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 javax.jms.Session createSession​(boolean transacted,
                                               int ackMode)
                                        throws javax.jms.JMSException
        Specified by:
        createSession in interface javax.jms.Connection
        Throws:
        javax.jms.JMSException
      • createSharedConnectionConsumer

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

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

        public void onTemporaryQueueCreate​(javax.jms.TemporaryQueue tempQueue)
      • onTemporaryTopicCreate

        public void onTemporaryTopicCreate​(javax.jms.TemporaryTopic tempTopic)
      • onSessionClosed

        public void onSessionClosed​(PooledSession session)
      • getConnection

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

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

        protected javax.jms.Session createSession​(SessionKey key)
                                           throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
      • 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.