Question: What is the best way to manage a database connection in a Java servlet?

Currently, I simply open a connection in the `init()` function, and then close it in `destroy()`. 

However, I am concerned that "permanently" holding onto a database connection could be a bad thing. 

Is this the correct way to handle this? If not, what are some better options?

edit: to give a bit more clarification: I have tried simply opening/closing a new connection for each request, but with testing I've seen performance issues due to creating too many connections.

Is there any value in sharing a connection over multiple requests? The requests for this application are almost all "read-only" and come fairly rapidly (although the data requested is fairly small).

Answer: 
I actually disagree with using Commons DBCP. You should really defer to the container to manage connection pooling for you.

Since you're using Java Servlets, that implies running in a Servlet container, and all major Servlet containers that I'm familiar with provide connection pool management (the Java EE spec may even require it). If your container happens to use DBCP (as Tomcat does), great, otherwise, just use whatever your container provides.
Are you pooling your connections? If not, you probably should to reduce the overhead of opening and closing your connections.

Once that's out of the way, just keep the connection open for as long as it's need, as John suggested.