我想在 Helper 类中为 Oracle DB 设置连接池。
public class DbConnection {
// Data source for the pooled connection
private static OracleDataSource dataSource;
// Host
private static final String dbHost = "bla";
// Port
private static final String dbPort = "1521";
// DBname
private static final String database = "orcl";
// DBuser
private static final String dbUser = "bla";
// DBpassword
private static final String dbPassword = "bla";
static {
OracleConnectionPoolDataSource opds;
try {
opds = new OracleConnectionPoolDataSource();
opds.setURL("jdbc:oracle:thin:@" + dbHost + ":" + dbPort + ":"
+ database);
opds.setUser(dbUser);
opds.setPassword(dbPassword);
dataSource = opds;
} catch (SQLException e1) {
System.err.println("Connection failed!");
}
try {
// Load driver
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("Driver not found!");
}
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
这是有效的,但它不是很快,所以我认为我错过了一些让池工作的东西。有什么建议么?
所以我的外部类只调用 getConnection() 方法......
Connection conn = DbConnection.getConnection();
...
conn.close();
你不应该使用ConnectionPoolDataSource
直接地。它旨在供应用程序服务器中的连接池使用。它本身不提供连接池。也可以看看https://stackoverflow.com/a/12651163/466862 https://stackoverflow.com/a/12651163/466862
换句话说:您需要使用实际的连接池,例如 DBCP、c3p0 或 BoneCP,或 UCP(通用连接池)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)