有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate+C3p0+mysql

我设置了一个应用程序,它使用hibernate和C3P0进行连接池。每当我尝试访问应用程序时,都会出现404错误。在日志中,我看到mysql已经阻止了应用程序用户。尽管我使用了flush主机,但我还是遇到了同样的异常。在mysql机器上执行netstat显示有许多入站连接试图以等待状态连接

     com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@64804446 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
     java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:10:46:910 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@6b7f48cf --                                                 Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:10:46:908 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@2bf45f28 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:10:46:919 CST] localhost-startStop-1   ERROR util.JDBCExceptionReporter:78 - Connections could not be acquired from the underlying database!
    [03-02-16 06:11:16:436 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@67c619c0 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:11:16:438 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@740adfca -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

然后我试着刷新主机。用于登录数据库的凭据是正确的。但不管怎样,每次访问应用程序时,我都会看到同样的例外


共 (2) 个答案

  1. # 1 楼答案

    我解决了这个问题。问题是xml文件中定义的所有属性都没有在属性文件中定义

  2. # 2 楼答案

    您可以通过在服务器启动时设置最大连接错误来调整该值:

       mysqld_safe  max_connect_errors=10000 &
    

    或者:

      SET GLOBAL max_connect_errors=10000;