gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-29 00:11:20 25 4
gpt4 key购买 nike

我正在尝试创建我的第一个连接池。我正在使用 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;
}
}

我不确定static 属性和synchronized

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

Connection con = MySQLConnectionPool.getConnection();

最后使用

关闭这个连接
con.close();

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

非常感谢!

最佳答案

这是错误的做法。

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

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

要了解如何配置 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

中提供的名称

关于java - Java 和 Tomcat 7 的基本数据库连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com