What sort of connection is this that you are talking about?
Whether you can use a single connection for all the clients depends on whether your connection is
thread safe(which most of the connections are not).
If the connection can support multiple threads then everything should be fine.
However, for closing the connection you would have to find out whether there is any client using it. There are a few ways of doing this, if you are interested we can discuss this further.
If connection is not threadsafe then you have to have one connection per client. For this, as you have pointed out, you can use a connection pool. However, if your code does not know when to close the connection then in all possibilities connection pool also will not help.
My point is that if your problem is a connection leak then you need to fix your code that creates and releases connections. If your problem is time/memory taken for connection creation/limiting number of connections then
you should look at connection pools.
JDBC connection pools are provided with all app/web servers. Google for connection pool and you would get numerous links.