十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
public class DBUtil {
站在用户的角度思考问题,与客户深入沟通,找到坊子网站设计与坊子网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖坊子地区。
static{
try {
Properties props = new Properties();
props.load(DBUtil.class.getClassLoader().getResourceAsStream("dbcp.properties"));
dataSource = BasicDataSourceFactory.createDataSource(props);
} catch (Exception e) {
e.printStackTrace();
}
}
private static DataSource dataSource;
private static ThreadLocalConnection conLocal = new ThreadLocalConnection();
public static Connection openConnection()throws SQLException{
Connection con = conLocal.get();
if(con == null){
con = dataSource.getConnection();
conLocal.set(con);
}
return con;
}
public static void closeConnection()throws SQLException{
Connection con = conLocal.get();
conLocal.set(null);
if(con != null !con.isClosed()){
con.close();
}
}
}
------dbcp.properties---------------------------------------------------------------
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@10.87.66.144:1521:orcl
username=scott
password=111111
initialSize=3
maxActive=15
maxIdle=2
minIdle=1
maxWait=30000
客户端连接池的配置要点。
1) 连接池的大小。单个应用程序中,接口的并发的连接数的1.5倍足够满足需求。
2) 保持一定的空闲连接数,这样可以保证客户端可快速的获取连接对象。
3) 合理设置空闲接的回收时间。避免客户端维持大量的空闲连接。
4) 定时检查长连接对象的有效性。主要是防止网络抖动或者db端出现异常时主动关闭连接。
连接池是创建和管理多个连接的一种技术,这些连接可被需要使用它们的任何线程使用。连接池技术基于下述事实:对于大多数应用程序,当它们正在处理通常需要数毫秒完成的事务时,仅需要能够访问JDBC连接的1个线程。未处理事务时,连接处于闲置状态。使用连接池,允许其他线程使用闲置连接来执行有用的任务。事实上,当某一线程需要用JDBC在MySQL或其他数据库上执行操作时,需要用到由连接池提供的连接。使用连接完成线程后,线程会将连接返回给连接池,以便该连接能够被其他需要使用连接的线程使用。从连接池“借出”连接时,该连接仅供请求它的线程使用。从编程观点看,其效果等同于每次需要JDBC连接时调用DriverManager.getConnection(),但是,采用连接池技术,可通过使用新的或已有的连接结束线程。连接池技术能显著增加Java应用程序的性能,同时还能降低资源使用率。
单纯靠增大max pool size=512 的值来增大连接数 应该并不能解决你的问题。应该正常的来说 512的连接数已经足够多的了,入股还出现超过连接数的话,说明你的代码里有大量的数据库连接没有关闭,造成连接池泄漏,需要重新检查你的源代码,一个数据库连接使用完毕后要及时关闭,否则你设置再大的连接数也没有用,只是网站崩溃的时间晚一点而已。