如果在一个简单的jsp中,我调用PoolDataSource.getConnection()并将其用于查询,我可以获取数据,但是如果刷新页面“ MaximumPoolSize”,则会出现超时错误,因此似乎该池使用了每次刷新时都将保持连接状态,而不会重复使用。
HikariCP版本:HikariCP-3.3.1 JDK版本:1.8.0_191 数据库:MySQL 驱动程序版本:mariadb-java-client-2.4.0; mysql-connector-java-8.0.15 Tomcat版本:9.0.13
嗨,我正在尝试在Web应用程序中替换Apache Torque,我想在连接池上使用标准ResultSet。 我已经创建了一个启动servlet,它从文件中读取数据库连接信息,该servlet在Tomcat启动时运行一次,因此连接信息可用。 之后,我制作了一个Java类,使用连接信息来像这样初始化HikariDataSource:
public class PoolDataSource {
private static HikariConfig config = new HikariConfig();
private static HikariDataSource ds ;
private static String lastError = "";
public static void init () {
try {
// leggo le impostazioni
if (DataConfig.isReady()) {
lastError = "";
config.setMaximumPoolSize(50);
config.setMinimumIdle(5);
config.setPoolName("MainPool");
config.setDataSourceClassName("org.mariadb.jdbc.MySQLDataSource");
config.addDataSourceProperty("serverName", DataConfig.getHost());
config.addDataSourceProperty("port", DataConfig.getPort());
config.addDataSourceProperty("databaseName", DataConfig.getDatabasename());
config.addDataSourceProperty("properties", "useUnicode=true;characterEncoding=utf8");
config.setUsername(DataConfig.getUsername());
config.setPassword(DataConfig.getPassword());
config.setIdleTimeout(1000);
config.setConnectionTimeout(5000);
config.setLeakDetectionThreshold(2000);
config.setMaxLifetime(7000);
ds = new HikariDataSource(config);
if (isConnected()) {
// controllo il database per vedere se esiste la struttura ed i dati base
}
} else {
Logger.Warning("---- Percorso base non settato ----", 0);
}
} catch (Exception ex) {
lastError = ex.toString();
Logger.Error(ex, "---- Errore in connessione al database ----", 0);
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
我想获得一个连接对象,可以直接在我的jsp页面中使用它,但是现在经过一些刷新后,它结束了响应。
谢谢