Това не е правилният начин. Източникът на данни трябва да се управлява от какъвто и да е контейнер, в който изпълнявате приложението. MysqlConnectionPoolDataSource
ене пул за връзки. Това е просто конкретна реализация на javax.sql.DataSource
интерфейс. Обикновено го дефинирате в контекста на JNDI и го получавате от там. Също така самият MySQL посочва всичко това изрично в тяхната документация
.
Сега как да го използвате зависи от целта на приложението. Ако това е уеб приложение, тогава трябва да се обърнете към документацията за JNDI ресурси на въпросния servletcontainer/appserver. Ако е например Tomcat, тогава можете да го намерите тук . Ако използвате клиентско приложение - за което силно бих поставил под въпрос стойността на пула за връзки -, тогава трябва да потърсите рамка за обединяване на връзки, която може да използва предоставения от MySQL източник на данни за връзки, като напр. C3P0 .
Другият проблем с кода, който сте публикували е, че PooledConnection#getConnection()
ще върне основния връзка, която по този начин ене обединена връзка. Извикването на close към него няма да върне връзката към пула, а просто наистина ще го затвори. Пулът трябва да създава нова връзка всеки път.
След това историята за безопасността на нишките, която зависи от истинската въпросната рамка за обединяване на връзки. C3P0 е доказал своята стабилност от години, не се притеснявате за това, стига да пишете JDBC код според стандартния идиом, т.е. да използвате само JDBC интерфейсите и придобивати затворете всички ресурси (Connection
, Statement
и ResultSet
) във възможно най-кратък обхват.