Class ConnectionPool

  • All Implemented Interfaces:
    ExceptionListener
    Direct Known Subclasses:
    XaConnectionPool

    public class ConnectionPool
    extends Object
    implements ExceptionListener
    Holds a real JMS connection along with the session pools associated with it.

    Instances of this class are shared amongst one or more PooledConnection object and must track the session objects that are loaned out for cleanup on close as well as ensuring that the temporary destinations of the managed Connection are purged when all references to this ConnectionPool are released.

    • Method Detail

      • close

        public void close()
      • expiredCheck

        public boolean expiredCheck()
        Determines if this Connection has expired.

        A ConnectionPool is considered expired when all references to it are released AND either the configured idleTimeout has elapsed OR the configured expiryTimeout has elapsed. Once a ConnectionPool is determined to have expired its underlying Connection is closed.

        Returns:
        true if this connection has expired.
      • getNumSessions

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

        public int getNumIdleSessions()
        Returns:
        the total number of Sessions that are in the Session pool but not loaned out.
      • getNumActiveSessions

        public int getNumActiveSessions()
        Returns:
        the total number of Session's that have been loaned to PooledConnection instances.
      • setBlockIfSessionPoolIsFull

        public void setBlockIfSessionPoolIsFull​(boolean block)
        Configure whether the createSession method should block when there are no more idle sessions and the pool already contains the maximum number of active sessions. If false the create method will fail and throw an exception.
        Parameters:
        block - Indicates whether blocking should be used to wait for more space to create a session.
      • setBlockIfSessionPoolIsFullTimeout

        public void setBlockIfSessionPoolIsFullTimeout​(long blockIfSessionPoolIsFullTimeout)
        Controls the behavior of the internal session pool. By default the call to Connection.getSession() will block if the session pool is full. This setting will affect how long it blocks and throws an exception after the timeout. The size of the session pool is controlled by the @see #maximumActive property. Whether or not the call to create session blocks is controlled by the @see #blockIfSessionPoolIsFull property
        Parameters:
        blockIfSessionPoolIsFullTimeout - - if blockIfSessionPoolIsFullTimeout is true, then use this setting to configure how long to block before retry
      • isReconnectOnException

        public boolean isReconnectOnException()
        Returns:
        true if the underlying connection will be renewed on JMSException, false otherwise
      • setReconnectOnException

        public void setReconnectOnException​(boolean reconnectOnException)
        Controls weather the underlying connection should be reset (and renewed) on JMSException
        Parameters:
        reconnectOnException - Boolean value that configures whether reconnect on exception should happen