与Java和Tomcat 7的基本数据库连接池

我正在尝试创建我的第一个连接池。 我正在使用Tomcat 7和MySQL DB创建Java Web应用程序,我想创建最简单的连接池。 我已经看过几个教程,但对我来说并不是很清楚,所以我想让你确认我是否做得很好。

我已将以下类编写为连接池管理器:

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; } } 

我不确定静态属性和同步

而且我不确定池中的“客户端”类。 我知道他们只需要使用连接

 Connection con = MySQLConnectionPool.getConnection(); 

最后使用关闭此连接

 con.close(); 

就是这样吗? 而且,有没有更简单或更好的方法来做到这一点?

非常感谢!

这是错误的做法。

Tomcat已经有一个连接池,您可以通过conf目录中的context.xml配置和设置,而无需任何代码。

在那里定义之后,您需要做的就是在代码中查找JNDI DataSource。 硬编码所有这些(并重新发明轮子)是一个非常糟糕的主意。

要了解如何配置JNDI数据源,请查看手册: http : //tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

Tomcat手册还有一个如何从池中获取连接的示例:

 InitialContext cxt = new InitialContext(); DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/dsname" ); 

其中dsname是您在context.xml提供的名称

查看JNDI数据源HOW-TO和Tomcat JDBC连接池 Tomcat文档。 让Tomcat这样做是特别优选的,因为它避免了类加载器泄漏。