To nie jest właściwa droga. Źródło danych musi być zarządzane przez dowolny kontener, w którym uruchomiona jest aplikacja. MysqlConnectionPoolDataSource
jest nie pula połączeń. To tylko konkretna implementacja javax.sql.DataSource
berło. Zwykle definiujesz go w kontekście JNDI i stamtąd go otrzymujesz. Również sam MySQL stwierdza to wszystko wyraźnie w ich dokumentacja
.
Teraz, jak z niego korzystać, zależy od celu aplikacji. Jeśli jest to aplikacja internetowa, należy zapoznać się z dokumentacją zasobów JNDI danego servletcontainer/appserver. Jeśli jest to na przykład Tomcat, możesz go znaleźć tutaj . Jeśli używasz aplikacji klienckiej — w przypadku której bardzo kwestionowałbym wartość puli połączeń — musisz poszukać struktury puli połączeń, która może korzystać z puli danych z puli połączeń dostarczanych przez MySQL, takich jak C3P0 .
Inny problem z kodem, który opublikowałeś, polega na tym, że PooledConnection#getConnection()
zwróci podstawę połączenie, które zatem nie połączenie w puli. Wywołanie tej funkcji nie przywróci połączenia do puli, ale po prostu ją zamknie. Pula musi za każdym razem tworzyć nowe połączenie.
Następnie historia o bezpieczeństwie wątków, która zależy od rzeczywistego kwestionowana struktura puli połączeń. C3P0 udowodnił swoją solidność od lat, nie martw się tym, dopóki piszesz kod JDBC zgodnie ze standardowym idiomem, tj. używaj tylko interfejsy JDBC i zdobądź i zamknij wszystkie zasoby (Connection
, Statement
i ResultSet
) w możliwie najkrótszym zakresie.