
这是我的tomcatde DHCP的配置
<Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system" password="sa" removeAbandoned="true" removeAbandonedTimeout="60" type="javax.sql.DataSource"
url="jdbc:sqlserver://127.0.0.1:1433DatabaseName=base" username="sa"/>
当中的
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="60"就是用来配置数据库断开后自动连接的。
在以往的开发中,常常遇到tomcat连接池断掉后(比如网络断线),无法自动重新连接,导致数据库连接始终无效,今天发现此问题的一个解决方案。首先,在连接池的配置中(XXX.XML),DB的url后加上参数,如sqlserver的加autoReconnect=true,这是自动重连的基础保证。
其次,一定要在tomcat中抛出连接异常,这一点很重要。一般我们的连接都会用class封装起来,一场也会在class中捕获,并处理掉,这样会导致连接无法自动恢复。估计tomcat所带的dbcp连接池的重连机制是捕获tomcat中抛出的连接异常再重新连接,所以,连接异常一定要被抛出而不是自行处理掉。否则连接池会无法重新连接。
所以,实现tomcat自带连接池dbcp自动重连的解决方案是,1。加上autoReconnect=true的参数 2。连接异常要被抛出
forumID=123&threadID=6653&tstart=1500
数据库连接池自动恢复问题.详情在内容里.
做一个项目.其中使用两个oracle,中间共享一个数据库.库文件在磁盘阵列中.我现在是创建两个连接池.分别用thin的方式连接.然后用multipool将两个连接池做load-balance.但现在有个问题.我想实现当两个数据库都down掉.再重起时.我的程序可以直接用.不用重起weblogic.可是weblogic却不这样.当数据库down掉后再重起.weblogic连接池显示还是报错.我看有的资料用testtable.我也设了.刷新周期也设了.可是不好使了.
一种是在代码中写死通过NEW *** 作符创建DataSSource,然后set一些连接属性,这里不在累述另外一种是基于SPRING的配置方法,然后让SPRING的Context自动加载配置!欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)