我想創建我的第一個連接池。我正在用Tomcat 7和MySQL DB創建一個Java Web應用程序,並且我想創建最簡單的連接池。 我看了幾篇教程,但對我來說並不是很清楚,所以我想讓你確認一下我是否做得很好。基本的數據庫連接池與Java和Tomcat 7
我寫了下面的類爲連接池管理器:
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();
這方面就是這樣? 此外,有沒有更簡單或更好的方法來做到這一點?
非常感謝!
DAO不管理*數據源,它只是*使用*它。您可能還想閱讀JavaEE教程:http://docs.oracle.com/javaee/6/tutorial/doc/bncjj.html –
如果連接池被配置爲Tomcat中的JNDI DataSource和Resource的工廠屬性是'org.apache.tomcat.jdbc.pool.DataSourceFactory',從java類訪問數據源時的DataSource類型是什麼?我使用'org.apache.tomcat.jdbc.pool.DataSource',或者它應該是'javax.sql.DataSource'(後者是Resource的'type'屬性的值)? – Sefran2