如题,最近正从c3p0更换到hikari,配置文件搞来搞去都有问题,先是过一会儿就会失去链接,无法获取数据。经修改之后,过一会儿在刷新页面回去数据,就会很慢才会返回connection,拉取到数据;如下配置文件:
jdbcUrl = jdbc:mysql://xx.xx.xx.xx:3306/dbname?useUnicode=true&useSSL=true&autoReconnect=true&failOverReadOnly=false&generateSimpleParameterMetadata=true
username = mysql
password = mysql
readOnly = false
driverClassName =
com.mysql.jdbc.Driver
maxLifetime = 1800000
idleTimeout = 600000
maximumPoolSize = 200
minimumIdle = 5
connectionTimeout = 30000
autoCommit = true
数据库连接获取代码部分:
package com.jdbc;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JdbcUtil {
protected static ThreadLocal<Connection> threadLocalConnection = new ThreadLocal<Connection>();
private static DataSource dataSource = null;
private static HikariDataSource hikariDataSource = null;
public static void init(String config){
try {
// System.setProperty("com.mchange.v2.c3p0.cfg.xml",config);
// dataSource = new ComboPooledDataSource();
HikariConfig hikariConfig = new HikariConfig(config);
hikariDataSource = new HikariDataSource(hikariConfig);
}catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection conn = threadLocalConnection.get();
try {
if (conn == null || conn.isClosed()) {
conn = hikariDataSource.getConnection();
threadLocalConnection.set(conn);
}
}catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeResultSet(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void closeStatement(Statement st) {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void closeConnection(Connection conn) {
if (conn != null) {
try {
if(!conn.isClosed()){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
threadLocalConnection.remove();
}
}
}
public static void closeConnectionIfAutoCommit(Connection conn) {
if (conn != null) {
try {
if (conn.getAutoCommit()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
threadLocalConnection.remove();
}
}
}
public static void close(ResultSet rs, Statement st, Connection conn) {
closeResultSet(rs);
closeStatement(st);
closeConnectionIfAutoCommit(conn);
}
public static void close(Statement st, Connection conn) {
closeStatement(st);
closeConnectionIfAutoCommit(conn);
}
}
有用过hikari的同学看看,哪里有问题,
Hikari版本2.4.7