activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Rosenberg (JIRA)" <j...@apache.org>
Subject [jira] Created: (AMQ-1578) No exposure to the 'idleTimeout' property for ConnectionPool class, which makes it difficult to implement keepAlive semantics on PooledConnections
Date Mon, 04 Feb 2008 17:05:35 GMT
No exposure to the 'idleTimeout' property for ConnectionPool class, which makes it difficult
to implement keepAlive semantics on PooledConnections
--------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: AMQ-1578
                 URL: https://issues.apache.org/activemq/browse/AMQ-1578
             Project: ActiveMQ
          Issue Type: Bug
          Components: JMS client
    Affects Versions: 5.0.0
         Environment: 5.1-SNAPSHOT
            Reporter: Jason Rosenberg


The ConnectionPool class has a 'idleTimeout' property, but this is not accessible easily,
via the PooledConnectionFactory class.

This essentially means that there's no easy way to implement a keepAlive setup for underlying
tcp connections.  By default, the idleTimeout is set to 30 seconds, and when this expires,
it shuts down the connection's transport.  Furthermore, it ignores and knows nothing about
the InactiviyMonitor's efforts to keep the tcp connection refreshed.

A simple fix would be to have the PooledConnectionFactory have a setter for the idleTimeout
property, and then pass this one when it creates new connections.   As a work-around, I've
created a sub-class of the PooledConnectionFactory class, that looks like this (this sub-classes
actually the jencks amqpool class, which is very similar to the activemq version of the class,
which has the same issue):


public class PooledConnectionFactoryWithIdleTimeout extends PooledConnectionFactory {
    
   private int idleTimeout = 0; 
   
   public int getIdleTimeout() {
       return idleTimeout;
   }

   public void setIdleTimeout(int idleTimeout) {
       this.idleTimeout = idleTimeout;
   } 
   
   @Override
   protected ConnectionPool createConnectionPool(ActiveMQConnection connection) {
       ConnectionPool connPool = new ConnectionPool(connection, getPoolFactory());
       connPool.setIdleTimeout(idleTimeout);
       
       return connPool;
   }   
}



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message