oracle⾃动重新连接,数据库连接池⾃动重新连接问题
软件工程简历tomcat连接池⾃动重新连接问题- -
Tag: Tag tomcat 连接池 重新连接
在以往的开发中,常常遇到tomcat连接池断掉后(⽐如⽹络断线),⽆法⾃动重新连接,导致数据库连接始终⽆效,今天发现此问题的⼀个解决⽅案。
⾸先,在连接池的配置中(XXX.XML),DB的url后加上参数,如sqlrver的加;autoReconnect=true,这是⾃动重连的基础保证。
其次,⼀定要在tomcat中抛出连接异常,这⼀点很重要。⼀般我们的连接都会⽤class封装起来,⼀场也会在class中捕获,并处理掉,这样会导致连接⽆法⾃动恢复。估计tomcat所带的dbcp连接池的重连机制是捕获tomcat中抛出的连接异常再重新连接,所以,连接异常⼀定要被抛出⽽不是⾃⾏处理掉。否则连接池会⽆法重新连接。
所以,实现tomcat⾃带连接池dbcp⾃动重连的解决⽅案是,1。加上autoReconnect=true的参数 2。连接异常要被抛出
我现在做⼀个项⽬.其中使⽤两个oracle,中间共享⼀个数据库.库⽂件在磁盘阵列中.我现在是创建两个连接池.分别⽤thin的⽅式连接.然后⽤multipool将两个连接池做load-balance.但现在有个问题.我想实现当两个数据库都down掉.再重起时.我的程序可以直接⽤.不⽤重起weblogic.可是weblogic却不这样.当数据库down掉后再重起.weblogic连接池显⽰还是报错.我看有的资料⽤testtable.我也设了.刷新周期也设了.可是不好使了.版本或哪位⼤哥有什么⽅法了.能否详细告知⼀下.谢谢了.另有,我的weblogic是做集群.Test Table Name:测试表名
Init SQL:初始化SQL语句 如:lect * from 测试表名
请问如何设置"Init SQL:初始化SQL语句 如:lect * from 测试表名"
我记得原先回答过⼀个类似的问题。设定3个地⽅:
1。TestConnectionsOnRerve : true
2。RefreshMinutes parameter : 设定connection pool的刷新时间
3。Test Table Name : Dual
⽐如对于c3p0来讲,acquireRetryAttempts这个参数,如果>0就是你指定的连接次数,如果<0则表⽰⽆限制的连接。
梅艳芳的电影增加配置⽂件c3p0.properties
增加配置项如下:
#Defines how many times c3p0 will try to acquire a new Connection from the databa
#before giving up.
#If this value is less than or equal to zero, c3p0 will keep trying to fetch a Connection
#indefinitely.
acquireRetryAttempts=60
#Milliconds, time c3p0 will wait between acquire attempts.
森林防火工作总结
acquireRetryDelay=60000
#If true, a pooled DataSource will declare itlf broken and be permanently clod if a
#Connection cannot be obtained from the databa after making acquireRetryAttempts to做出指示
#acquire one.
#If fal, failure to obtain a Connection will cau all Threads waiting for the pool to
# acquire
#a Connection to throw an Exception, but the DataSource will remain valid, and will
#attempt to
#acquire again following a call to getConnection().
imei码怎么查询breakAfterAcquireFailure=fal
scud 写道:
huazii 写道:
正如楼上所⾔
据我所致common.dbcp好像不⽀持 dbcp也有⼀个 validationQuery ,难道不⾏吗?
哪⾥写着不⽀持哪?
学生行为习惯哦 果然 谢谢指教。
好些⽇⼦没到论谈了,有这么多回贴,谢谢⼤家指教。
不过我可能没有表达清楚,⾸先数据库和服务器不在⼀台机器上,所以如: jdbc:oracle:thin:@localhost:1521:databa 这样的是不⾏的。应该是
: jdbc:oracle:thin:@ip:1521:databa 问题是⽹络终断,⽐如:将⽹络禁⽤。
米龙老爹在数据库中查V$ssion发现所有的连接都不存在了。这时⽆论怎么连都不会连上了(当然了⽹络断了嘛)。这时在恢复⽹络连接,在数据库中查V$ssion发现所有的连接还是不存在,连接池也⽆法恢复的。
robbin 写道:
这台服务器上跑了很多⽹站,其中不乏好⼏个Java做的⽹站,他们都建⽴了数据库连接池。有⼀次我在MySQL Administrator⾥⾯查看连接,⼀时好奇,把那些数据库连接池建⽴的连接都给kill掉了,我想看看会不会报错? 结果呢?没⼀会功夫,他们⼜⾃动连接上了,呵呵。我觉得现在的数据库连接池都应该有这个功能吧。
kill掉的效果和⽹络突然端的效果不⼀样的,⽹络断了可能⽆法⼀下让c/s双⽅都明⽩连接已经断了。像ssh登陆,如果⽹络突然断掉,服务器⾥的⽤户还是显⽰在线,和kill掉不⼀样的。⽀持断⽹重联的pool应该有⼀个断线检测的机制。
引⽤:
kill掉的效果和⽹络突然端的效果不⼀样的,⽹络断了可能⽆法⼀下让c/s双⽅都明⽩连接已经断了。像ssh登陆,如果⽹络突然断掉,服务器⾥的⽤户还是显⽰在线,和kill掉不⼀样的。⽀持断⽹重联的pool应该有⼀个断线检测的机制。
同意!但我现在所⽤的如:dbcp,c3p0都不⽀持,weblogic可以通过管理重连。有没有⽀持断⽹重联的pool?[/quote]冬瓜瘦肉汤