You didn't say what sort of application this sits in.
If (as Paul suggests) it's a multi-threaded environment then a static connection is a recipe for problems.
Since you have a connection pool anyway there is no need for a single static instance. Just get a connection from the pool for a transaction, then close when finished.
However, as for the SQLException try/catch blocks, since you have no catch block in there then any prior exception (which I think is being thrown) is going to vanish if the close() method throws an exception.
That's why
you should wrap the close() in a try/catch so that you do not lose the original exception.
Using the above in your finally ensures that it is the original exception that is passed up, and also prevents a failure to close from causing an error.