Of course there are commercial tools and open source. www.javaperformancetuning.com has a pretty extensive list. Of course the downside is that there is a weatlh of choices that all have different strengths.
One option for the jdbc monitoring is the JAMon jdbc proxy driver that tracks opens/closes of connections, statements, resultsets etc along with tracking performance of each query as well as tracking each exception that is thrown. You can view the output via a web page if you are running in a web server (or via a couple function calls if you are not). It also comes with a servlet filter to track request performance, an ejb filter to track ejb performance as well as a few other things.