I have not looked at your code closely, but do you close the connections after use in your
JDBC code / DAO class? Do you close connections after a period of use? Do you actually lease connections from pool? Do you reap dead connections?
After all, maybe this is just for learning purposes, but in real I would forget about it at all and go for a long-existing and thoroughly tested open source connection pooling framework which is undoubtely more robust and reliable than you ever would code. For example Apache Commons DBCP, C3P0 and Proxool. Also keep in mind that most application servers ships with built in connection pooling facilities, like Apache
Tomcat. I would prefer that above a homegrown pool.
If it is actually for learning purposes, here´s an article which I found very useful when I wanted to learn something about connection pooling some ages ago:
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/conpool.html Note: once again, don´t use it for production. It´s just a bare example, there is much more to be done in the given code example.