每次刷新页面时我都有新的连接

时间:2019-02-18 11:44:09

标签: java jsp tomcat hikaricp

如果在一个简单的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页面中使用它,但是现在经过一些刷新后,它结束了响应。

谢谢

0 个答案:

没有答案