使用Proxool连接池连接MYSQL数据库的问题
应用布属在TOMCAT服务器下运行
错误信息如下:
[2012-09-06 08:14:18][ERROR][Prototyper.java Line:105 (sweep)] Prototype com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2291) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2212) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) at sun.reflect.GeneratedConstructorAccessor86.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:154) at org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.java:39) at org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.java:159) at org.logicalcobwebs.proxool.Prototyper.sweep(Prototyper.java:102) at org.logicalcobwebs.proxool.PrototyperThread.run(PrototyperThread.java:44) Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.GeneratedConstructorAccessor132.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:348) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2385) at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2230) ... 15 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:478) at java.net.Socket.<init>(Socket.java:375) at java.net.Socket.<init>(Socket.java:218) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298) ... 17 more我的连接池的配置是:
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="driver"><value>${jdbc.driverClassName}</value></property> <property name="driverUrl"><value>${jdbc.url}</value></property> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="alias" value="Pool_dbname" /> <!-- 最小保持的空闲的连接数 --> <property name="prototypeCount" value="2" /> <!-- 最大的数据库连接数. --> <property name="maximumConnectionCount" value="100" /> <!-- 最小的数据库连接数 --> <property name="minimumConnectionCount" value="2" /> <!-- 这是我们可一次建立的最大连接数。那就是新增的连接请求,但还没有可供使用的连接。由于连接可以使用多线程,在有限的时间之间建立联系从而带来可用连接,但是我们需要通过一些方式确认一些线程并不是立即响应连接请求的,默认是10 --> <property name="simultaneousBuildThrottle" value="2" /> <!-- 一个线程的最大寿命. --> <property name="maximumConnectionLifetime" value="28800" /> <!-- 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟 --> <property name="maximumActiveTime" value="20000" /> <!-- house keeper 保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查各个连接的状态,并判断是否需要销毁或者创建. --> <property name="houseKeepingSleepTime" value="3000" /> <!-- 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试 --> <property name="houseKeepingTestSql" value="select CURRENT_DATE" /> </bean>帮忙看看是哪里出错了,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
学习中!问题解决了吗?我也遇到了
学习中。
请确认:
1.数据库服务器是否启动,从tomcat服务器所在机器是否网络联通?
2.是一直都连不上,还是间断性? 如果是间断性,考虑mysql的连接超时机制
3.请给出jdbc.driverClassName和jdbc.url几个配置信息?
类似:jdbc:mysql://localhost:3306/xxxuseUnicode=true&characterEncoding=utf8
请确认:
1.数据库服务器是否启动,从tomcat服务器所在机器是否网络联通?
2.是一直都连不上,还是间断性? 如果是间断性,考虑mysql的连接超时机制
3.请给出jdbc.driverClassName和jdbc.url几个配置信息?
类似:jdbc:mysql://localhost:3306/xxxuseUnicode=true&characterEncoding=utf8