解决方案 »
- Mybatis+ehcache+存储过程返回List缓存问题
- 大虾们帮看下关于webwork action 跳转到jsp页面的问题
- JXL 如何跨Sheet 设置公式
- 我对面向对象编程思想简单的理解
- 请教一个structs的问题!
- 别的技术
- 怎样在jbuider中创建联合主键类,请举例说明!
- Java写入文件的编码问题,有点奇怪
- Java发送http请求出现Server sent an unsupported extension: type_35
- zookeeper启动失败
- 我本来项目是用GBK写的,但是都要转成uft-8我把码全换了就出了以下的错求解
- com.dto.teacher is not mapped
<parameter>
<name>testConnectionOnCheckin</name>
<value>true</value>
</parameter>
<parameter>
<name>idleConnectionTestPeriod</name>
<value>60</value>
</parameter>
连接池中已取得的连接都是旧数据库的,当数据库变了之后,连接旧数据库如果不通了,那么连接也就无效了,通过域名配置的数据库,如果c3po能够断线重连或者无效重连的话,切换数据库服务器之后,取得的新连接应该是新数据库的。
如果c3po的机制是这样,那么1楼的配置应该可行。
是写到配置文件,但是这些配置文件在启动的时候就被保存到cache里面去了否则连接池的效果就没有。每次链接都去访问啊。。
关键就是怎么让连接池在配置改了以后,重新读取配置文件
这个就要看你的服务器是否支持,不支持你也只能干瞪眼啊
我对一切服务器都不熟悉。
两个数据库的连接是同一个后台,也就是同一个存储空间,不用担心数据的问题。
现在关键的问题是,当老数据库挂掉后,转到新数据库,怎么让连接都使用新的连接。testConnectionOnCheckin 是在取得一个新连接时候检查新连接的有效性,对于老连接没有做处理。
有没有什么参数,可以检查老连接的有效性?
<property name="testConnectionOnCheckin">true</property>
<property name="idleConnectionTestPeriod" value="小于数据库切换时间就可以了"/>
提交和获得都校验,性能没什么保证。还不如来个预警重新启动。
testConnectionOnCheckin是获得连接检查连接的有效性,
idleConnectionTestPeriod是每隔多少秒检查一次空闲的连接,(这里的检查是指什么?)
我设置了这个,但得到连接后,新连接是可以用的,老连接使用后提交异常信息 "连接已关闭"
照理说,如果这两个设置了,那么老连接应该在得到后检查下,如果检查不通用,
客户端是不可能拿到并使用的。
但事实是客户端拿到并使用了,矛盾了。为什么?
这个不是使用 C3P0 来解决的,这应该在数据库集群进行考虑(比如 Oracle 的 RAC),程序只是数据库的客户端,不用关心数据库是一台,还是多台集群的。
如果客户端拿这个连接操作,会报错。
c3p0检查一个连接有效性是怎么检查的。
我的目的是:去c3p0连接池拿到连接后,如果连接不正常,
那么我就换一个连接,直到取得正常连接为止。
1.windows下启动c3p0连接池,连接hp-ux上的DB2数据库
2.hp-ux下启动c3p0数据池,连接hp-ux上的DB2数据库
3.windows下启动c3p0连接池,连接windows上的DB2数据库
然后关闭DB2数据库,又启动
测试结果:
2,发N个交易正常,N个交易后,一直接报关闭的连接异常
1,3正常 永远正常
不知道什么原因?
<property name="driver">com.ibm.db2.jcc.DB2Driver</property>
<property name="jdbcUrl">jdbc:db2://197.3.5.26:60008/emute:currentSchema=DB2;</property>
<property name="user">db2</property>
<property name="password">db2</property>
<property name="testConnectionOnCheckout">true</property>
<property name="testConnectionOnCheckin">true</property>
<property name="automaticTestTable">con_test</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">80</property>
<property name="maxIdleTime">60</property>
<property name="maxPoolSize">200</property>
<property name="minPoolSize">100</property>
<property name="maxStatements">300</property>