关于数据库连接池的实现 数据库连接池的实现技术上有什么难点吗?现在用h3的c3p0连接池,有时候会报deadlock啥的,现在也没彻底解决。我考虑自己按照一定策略把数据库连接cache一下就可以了吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 技术上没什么难点,记得:1。连接池需要守护进程或断线重连机制,保持连接有效(比如网线拨了,不用重启服务)2。需要提供一系列参数,最好通过配置文件可以配,提供一个,仅做参考: <category code="eip" type="db"> <param name="eid" value="EIP"/> <param name="expire" value="60000"/> <param name="driver" value="org.postgresql.Driver"/> <param name="url" value="jdbc:postgresql://127.0.0.1/EnterInfoPortal?charSet=UTF8"/> <param name="uname" value="postgres"/> <param name="pass" value="postgres"/> <param name="sharemin" value="1"/> <param name="sharemax" value="2"/> <param name="standardmin" value="1"/> <param name="standardmax" value="2"/> <param name="stmax" value="20"/> <param name="psmax" value="20"/> <param name="csmax" value="20"/> </category> <category code="cartoon" type="db"> <param name="eid" value="CARTOON"/> <param name="expire" value="60000"/> <param name="driver" value="oracle.jdbc.driver.OracleDriver"/> <param name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"/> <param name="uname" value="ctcm"/> <param name="pass" value="oracle"/> <param name="sharemin" value="1"/> <param name="sharemax" value="2"/> <param name="standardmin" value="1"/> <param name="standardmax" value="2"/> <param name="stmax" value="10"/> <param name="psmax" value="10"/> <param name="csmax" value="10"/> </category> 那个死锁是上个项目的问题,只是一些warning,c3p0会自动处理,并不影响使用。原因大概是mysql对非活动连接回收机制的设置问题,也有可能是代码里没有及时关闭连接。不过搞了很久也没有彻底搞定,现在这个问题并不紧急,只是通过这件事觉得用别人的东西有点郁闷,对它的细节不能完全把握,比如这个c3p0是在什么时候初始化连接的我也一直没搞明白。之前也用过朋友自己实现的连接池,就是不知道在实际场景中会不会遇到比较难缠的问题。看了上面大侠提供的信息,灰常有用,感谢!~ Filter过滤表单内容 hibernate 多对多 排序问题 在iReport中如何配置spring loaded Hibernate connection 找不到符号! Java多CPU多线程的问题 有关java的内存溢出问题:对象引用使用完毕后设置为null 关于数据类型String和Date 集思广议 高手请进:WebLogic Server是干什么的啊? struts2+ ajax跨域访问接返回参数 java网站项目要放到单位服务器上 JavaMail并发发送邮件的假死问题
1。连接池需要守护进程或断线重连机制,保持连接有效(比如网线拨了,不用重启服务)
2。需要提供一系列参数,最好通过配置文件可以配,提供一个,仅做参考:
<category code="eip" type="db">
<param name="eid" value="EIP"/>
<param name="expire" value="60000"/>
<param name="driver" value="org.postgresql.Driver"/>
<param name="url" value="jdbc:postgresql://127.0.0.1/EnterInfoPortal?charSet=UTF8"/>
<param name="uname" value="postgres"/>
<param name="pass" value="postgres"/>
<param name="sharemin" value="1"/>
<param name="sharemax" value="2"/>
<param name="standardmin" value="1"/>
<param name="standardmax" value="2"/>
<param name="stmax" value="20"/>
<param name="psmax" value="20"/>
<param name="csmax" value="20"/>
</category>
<category code="cartoon" type="db">
<param name="eid" value="CARTOON"/>
<param name="expire" value="60000"/>
<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<param name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"/>
<param name="uname" value="ctcm"/>
<param name="pass" value="oracle"/>
<param name="sharemin" value="1"/>
<param name="sharemax" value="2"/>
<param name="standardmin" value="1"/>
<param name="standardmax" value="2"/>
<param name="stmax" value="10"/>
<param name="psmax" value="10"/>
<param name="csmax" value="10"/>
</category>
原因大概是mysql对非活动连接回收机制的设置问题,也有可能是代码里没有及时关闭连接。
不过搞了很久也没有彻底搞定,现在这个问题并不紧急,只是通过这件事觉得用别人的东西有点郁闷,
对它的细节不能完全把握,比如这个c3p0是在什么时候初始化连接的我也一直没搞明白。之前也用过朋友自己实现的连接池,就是不知道在实际场景中会不会遇到比较难缠的问题。看了上面大侠提供的信息,灰常有用,感谢!~