これは正しい方法ではありません。データソースは、アプリケーションを実行しているコンテナで管理する必要があります。MysqlConnectionPoolDataSource
ない 接続プール。これは、javax.sql.DataSource
インターフェース。通常、JNDIコンテキストで定義し、そこから取得します。また、MySQL自体は、すべてをそれらのドキュメント
。
さて、それをどのように使用するかは、アプリケーションの目的によって異なります。 Webアプリケーションの場合は、問題のservletcontainer/appserverのJNDIリソースのドキュメントを参照する必要があります。たとえばTomcatの場合は、ここで見つけることができます。 。クライアントアプリケーションを実行している場合(接続プールの価値について非常に疑問があります)、MySQLが提供する接続プールデータソースを利用できる接続プールフレームワークを探す必要があります。 C3P0 。
投稿したコードのもう1つの問題は、PooledConnection#getConnection()
です。 基になるを返します したがって、ない接続 プールされた接続。 closeを呼び出すと、接続はプールに戻りませんが、実際に閉じます。プールは毎回新しい接続を作成する必要があります。
次に、スレッドの安全性に関する話です。これは、実際のに依存します。 問題の接続プールフレームワーク。 C3P0は何年にもわたってその堅牢性を証明しており、標準のイディオムに従ってJDBCコードを記述している限り、つまりのみを使用している限り、心配する必要はありません。 JDBCインターフェースを使用して、およびを取得します。 すべてのリソースを閉じます(Connection
、Statement
およびResultSet
)可能な限り最短の範囲で。