I'm trying to create my first connection pool. I'm creating a Java web aplication with Tomcat 7 and a MySQL DB, and I'd like to create the simplest connection pool possible. I've taken a look at several tutorials but it's not really clear for me, so I'd like you to confirm if I'm doing well.
I've written the following class as a connection pool manager:
package dao.mysql; import java.sql.Connection; import java.sql.SQLException; import org.apache.tomcat.jdbc.pool.DataSource; import org.apache.tomcat.jdbc.pool.PoolProperties; public class MySQLConnectionPool { private static DataSource datasource; private static String driver = "com.mysql.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/mydb"; private static String username = "user"; private static String password = "password"; public MySQLConnectionPool() { datasource = new DataSource(configurePoolProperties(driver, url, username, password)); } private PoolProperties configurePoolProperties(String driver, String url, String username, String password) { PoolProperties properties = new PoolProperties(); properties.setDriverClassName(driver); properties.setUrl(url); properties.setUsername(username); properties.setPassword(password); return properties; } public static synchronized Connection getConnection() { Connection connection = null; try { connection = datasource.getConnection(); } catch (SQLException ex) { System.out.println("Error while getting a connection from the pool! \nSQL state:" + ex.getSQLState() + "\nMESSAGE" + ex.getMessage()); } return connection; } } I'm not sure about the static properties nor the synchronized.
And I'm not sure about the "client" classes of the pool. I understand they have only to get a connection using
Connection con = MySQLConnectionPool.getConnection(); and finally close this connection using
con.close(); And that's it? And also, is there any simpler or better way to do this?
Thanks very much!