Hikaricp数据库连接池问题

如题,最近正从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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值