using snapshot apache-activemq-5.0-20071028.173739-45
if you call org.apache.activemq.pool.PooledConnection.close(), it calls ConnectionPool.decrementReferenceCount()
this updates the lastUsed time and decrements the ref count, which if its now zero, calls expiredCheck();
in this case, ConnectionPool.expiredCheck() will only close the connection if hasFailed or hasExpired is true (it won't close based on idle time because you've just updated lastUsed)
which means that in a lot of cases it won't actually close the connection. if you are shutting down the JVM, the connection must be closed otherwise there will be a non-daemon thread still waiting around which will prevent everything from shutting down cleanly.
to fix, i think if ref count is zero, then it should always close().