Topic: tomcat连接池支持重新连接数据库吗? |
![]() |
1.tomcat连接池支持重新连接数据库吗? | Copy to clipboard |
Posted by: pigengler Posted on: 2006-04-20 15:23 我做了一个测试,程序使用tomcat的连接池 <ResourceParams name="jdbc/info"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test</value> </parameter> <parameter><name>username</name><value>sa</value></parameter> <parameter><name>password</name><value>teesd</value></parameter> <parameter><name>maxActive</name><value>100</value></parameter> <parameter><name>maxIdle</name><value>50</value></parameter> <parameter><name>removeAbandoned</name><value>false</value></parameter> <parameter><name>maxWait</name><value>-1</value></parameter> </ResourceParams> 测试一、当我的tomcat启动以后,如果数据库重启了,tomcat的连接池就再也连接不到数据库了。。 测试二、tomcat启动的时候,数据库处于关闭状态,tomcat启动以后,再打开数据库,tomcat可以连接到数据库,但是如果数据库再次重启,tomcat的连接池就再也连接不到数据库了。。 tomcat在哪里可以配置在数据库重启之后,重新连接数据库???? |
2.Re:tomcat连接池支持重新连接数据库吗? [Re: pigengler] | Copy to clipboard |
Posted by: pigengler Posted on: 2006-04-20 15:27 在网上找到这样的一篇文章,,,但是测试了以后好像不行。 tomcat连接池自动重新连接问题- - Tag: Tag tomcat 连接池 重新连接 在以往的开发中,常常遇到tomcat连接池断掉后(比如网络断线),无法自动重新连接,导致数据库连接始终无效,今天发现此问题的一个解决方案。 首先,在连接池的配置中(XXX.XML),DB的url后加上参数,如sqlserver的加;autoReconnect=true, 这是自动重连的基础保证。 其次,一定要在tomcat中抛出连接异常,这一点很重要。一般我们的连接都会用class封装起来,一场也会在class中捕获,并处理掉,这样会导致连接无法自动恢复。估计tomcat所带的dbcp连接池的重连机制是捕获tomcat中抛出的连接异常再重新连接,所以,连接异常一定要被抛出而不是自行处理掉。否则连接池会无法重新连接。 所以,实现tomcat自带连接池dbcp自动重连的解决方案是,1。加上autoReconnect=true的参数 2。连接异常要被抛出 |
3.Re:tomcat连接池支持重新连接数据库吗? [Re: pigengler] | Copy to clipboard |
Posted by: pigengler Posted on: 2006-04-20 15:55 还有一点比较奇怪的是,当数据库已经down了的时候,我的测试程序向连接池申请连接,连接池居然成功的返回一个连接,但是用这个连接执行SQL的时候,就会抛出SQLException Connection reset by peer: socket write error。。。。。 当我的数据库重启动以后,就一直都报这个错了。系统就再也连接不上了。 DEBUG 2006-04-20 15:54:54,334 | CatalogService:getCatalogById | 申请org.apache.commons.dbcp.PoolableConnection@79801c java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset by peer: socket write error at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) |
4.Re:tomcat连接池支持重新连接数据库吗? [Re: pigengler] | Copy to clipboard |
Posted by: bluepure Posted on: 2006-04-20 16:32 dbcp好像不支持,autoReconnect=true是连接 mysql的专用参数 建议用proxool作连接池。 在tomcat里的配置为: <context> <Resource name="jdbc/mydatasource" auth="Container" type="javax.sql.DataSource" factory="org.logicalcobwebs.proxool.ProxoolDataSource" proxool.alias="hrs" user="joe" password="******" delegateProperties="foo=bar" proxool.driver-url="jdbc:oracle:thin:@127.0.0.1:1521:DB" proxool.driver-class="oracle.jdbc.driver.OracleDriver"/> </context> |
5.Re:tomcat连接池支持重新连接数据库吗? [Re: pigengler] | Copy to clipboard |
Posted by: pigengler Posted on: 2006-04-24 08:30 其他的兄弟没有什么意见和看法吗? |
6.Re:tomcat连接池支持重新连接数据库吗? [Re: pigengler] | Copy to clipboard |
Posted by: bluecrystal Posted on: 2006-07-14 17:15 建议不要用dbcp |
![]() |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |