Check the logic in your application.
I am guessing the application never calls close on connection after its done using it. Application may be losing the referenbce to connection object without calling close() on it.
If you don't call close on the connection object you got , the pool will continue to hold a reference to it assuming that its still in use.
And create a new connection every time a new connection request is made.