Si vous avez besoin d'un autonome pool de connexion, ma préférence vas C3P0 plus de DBCP (que j'ai mentionné dans cette réponse précédente), j'ai juste eu trop de problèmes avec DBCP sous une lourde charge. À l'aide de C3P0 est mort simple. À partir de la documentation:
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("swaldman");
cpds.setPassword("test-password");
// the settings below are optional -- c3p0 can work with defaults
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
// The DataSource cpds is now a fully configured and usable pooled DataSource
Mais, si vous exécutez l'intérieur d'un serveur d'application, je vous conseille d'utiliser l'intégré dans le pool de connexion qu'il fournit. Dans ce cas, vous devez le configurer (reportez-vous à la documentation de votre serveur d'application) et de récupérer une source de données via JNDI:
DataSource ds = (DataSource) new InitialContext().lookup("jdbc/myDS");