JDBC,servlet和奇怪的“连接关闭后不允许进行任何操作”

大卫90

我有一个Servlet,可将数据放置到远程MySQL数据库中。我从servlet调用post,该方法运行方法,该方法连接到数据库,在表上进行操作并关闭所有资源。但是,在预成型期间,发生“连接关闭后不允许进行任何操作”。但是,如果对所有资源都使用注释关闭方法,则所有方法都可以正常工作,并且数据库已更新。

在下面的代码中,我提供了更改对象名称和错误日志的代码:

public class MySqlManager {

Logger logger = Logger.getLogger("MySqlManager");
private Connection sqlConnection;

public Connection getConnenction() throws SQLException{
    sqlConnection = DriverManager.getConnection(DataConstants.dbUrl, DataConstants.dbName, DataConstants.password);
    return sqlConnection;
}

public MySqlManager() {
    DriverManager.setLogWriter(new PrintWriter(System.out));
}

public void putData(String value1, String value2, String value3) throws SQLException{
    Connection sqlConn = null; 
    Statement statement = null;
    ResultSet resultSet = null;
    PreparedStatement preparedStatement = null;

    try {
        //register for MySQL driver
        Class.forName("com.mysql.jdbc.Driver").

        //get connection for data base      
        sqlConn = getConnenction();
        logger.info("Connect to database");

        int id;

        //create a statement which gets data from database  
        statement = sqlConn.createStatement();

        //if exist row in column sec_id, get id of this row
        String idQuery = "SELECT id FROM table1 WHERE sec_id = \'" + value3 + "\'";
        logger.info("query=" + idQuery);
        resultSet = statement.executeQuery(idQuery);

        if(resultSet.next()){
        //if row exist, update data in this row     

        id = resultSet.getInt("id");        
            preparedStatement = sqlConn.prepareStatement("UPDATE table1 SET col2 = ?, col2 = ?, col3 = ?, col4 = ? WHERE id = ?");
            preparedStatement.setString(1, "some_tekst");
            preparedStatement.setLong(2, 90854924897293);
            preparedStatement.setString(3, "some_tekst");
            preparedStatement.setString(4, "some_tekst"));
            preparedStatement.setInt(5, id);
            int i = preparedStatement.executeUpdate();
            logger.info("Update " + i + " record");
        }else{

            //if row not exist, insert data to table1
            preparedStatement = sqlConn.prepareStatement("INSERT INTO table1 (col2, col3, col4, col5, col6, col7, col8) VALUES (?, ?, ?, ?, ?, ?, ?)");
            preparedStatement.setString(1, "some_tekst");
            preparedStatement.setLong(2, 9146517234571);
            preparedStatement.setString(3, "some_tekst");
            preparedStatement.setString(4, "some_tekst");
            preparedStatement.setInt(5, 0);
            preparedStatement.setString(6, "some_tekst"));
            preparedStatement.setString(7, "some_tekst"));
            int i = preparedStatement.executeUpdate();
            logger.info("Insert " + i + " record");
        }        
    } catch (SQLException ex) {
        Logger.getLogger(MySqlManager.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MySqlManager.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        Logger.getLogger(MySqlManager.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        Logger.getLogger(MySqlManager.class.getName()).log(Level.SEVERE, null, ex);
    }finally{

          /*if I close all resources which has been defined above, I have an error:

            SQLState(S1000) vendor code(0)
                java.sql.SQLException: Operation not allowed after ResultSet closed

        if I comment code below, all works fine, and database is update
          */

            try { resultSet.close();} catch (Exception e) {}
            try { statement.close();} catch (Exception e) {}
            try { preparedStatement.close();} catch (Exception e) {}
            try { closeConnection();} catch (Exception e) {}
    }
    }

     public synchronized final void closeConnection() throws SQLException{
         sqlConnection.close();
         sqlConnection = null;
     }

}

lis 21, 2014 12:56:32 PM com.test.database.MySqlManager putData
INFO: Connect to database
lis 21, 2014 12:56:32 PM com.test.database.MySqlManager putData
SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after     connection closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
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:1014)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1290)
at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1282)
at com.mysql.jdbc.ConnectionImpl.createStatement(ConnectionImpl.java:2653)
at com.mysql.jdbc.ConnectionImpl.createStatement(ConnectionImpl.java:2635)
at com.test.database.MySqlManager.putData(MySqlManager.java:33)
at com.test.database.SmackCcsClient.updateDB(SmackCcsClient.java:289)
at com.test.database.GCMNotification.doPost(GCMNotification.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

SQLState(08003) vendor code(0)

编辑:

在getConnection()期间发生错误日志

DriverManager.getConnection("jdbc:mysql://mysql-testhost:3306/dbname")
trying sun.jdbc.odbc.JdbcOdbcDriver
*Driver.connect (jdbc:mysql://mysql-testhost:3306/dbname)
    trying com.mysql.jdbc.Driver
SQLState(S1000) vendor code(0)
java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804)
    at com.mysql.jdbc.ResultSetImpl.realClose(ResultSetImpl.java:7331)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1527)
    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4156)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3548)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.test.database.MySqlManager.getConnenction(MySqlManager.java:8)
    at com.test.database.MySqlManager.putData(MySqlManager.java:52)
    at com.test.database.SmackCcsClient.updateDB(SmackCcsClient.java:289)
    at com.test.database.GCMNotification.doPost(GCMNotification.java:89)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
SQLState(S1000) vendor code(0)
java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804)
    at com.mysql.jdbc.ResultSetImpl.realClose(ResultSetImpl.java:7331)
    at com.mysql.jdbc.ResultSetImpl.close(ResultSetImpl.java:923)
    at com.mysql.jdbc.StatementImpl.realClose(StatementImpl.java:2590)
    at com.mysql.jdbc.StatementImpl.close(StatementImpl.java:582)
    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4188)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3548)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.test.database.MySqlManager.getConnenction(MySqlManager.java:8)
    at com.test.database.MySqlManager.putData(MySqlManager.java:52)
    at com.test.database.SmackCcsClient.updateDB(SmackCcsClient.java:289)
    at com.test.database.GCMNotification.doPost(GCMNotification.java:89)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
SQLState(S1000) vendor code(0)
java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804)
    at com.mysql.jdbc.ResultSetImpl.realClose(ResultSetImpl.java:7331)
    at com.mysql.jdbc.ResultSetImpl.close(ResultSetImpl.java:923)
    at com.mysql.jdbc.StatementImpl.realClose(StatementImpl.java:2590)
    at com.mysql.jdbc.StatementImpl.close(StatementImpl.java:582)
    at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1076)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3556)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.test.database.MySqlManager.getConnenction(MySqlManager.java:8)
    at com.test.database.MySqlManager.putData(MySqlManager.java:52)
    at com.test.database.SmackCcsClient.updateDB(SmackCcsClient.java:289)
    at com.test.database.GCMNotification.doPost(GCMNotification.java:89)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
SQLState(S1000) vendor code(0)
java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804)
    at com.mysql.jdbc.ResultSetImpl.realClose(ResultSetImpl.java:7331)
    at com.mysql.jdbc.ResultSetImpl.close(ResultSetImpl.java:923)
    at com.mysql.jdbc.StatementImpl.realClose(StatementImpl.java:2590)
    at com.mysql.jdbc.StatementImpl.close(StatementImpl.java:582)
    at com.mysql.jdbc.ConnectionImpl.isAutoCommitNonDefaultOnServer(ConnectionImpl.java:3798)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3644)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.test.database.MySqlManager.getConnenction(MySqlManager.java:8)
    at com.test.database.MySqlManager.putData(MySqlManager.java:52)
    at com.test.database.SmackCcsClient.updateDB(SmackCcsClient.java:289)
    at com.test.database.GCMNotification.doPost(GCMNotification.java:89)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
getConnection returning com.mysql.jdbc.Driver
阿努拉格·阿南德(Anurag Anand)

staticsqlConnection对象和中删除修饰符getConnection()它将正常工作。出现异常的原因是,通过使用static修饰符,您将为此类的所有对象创建单个连接对象。如果关闭它,则关闭所有servlet。

编辑:

正如问这个问题的人david90所讨论的那样,他的问题已通过更改MySQL驱动程序的版本来解决。从5.1.24到5.1.34

Calling ResultSet.close() on an already closed ResultSet caused an SQLException.

问题在MySQL驱动程序中存在5.1.24,同时对其进行了5.1.34修复。

Calling ResultSet.close() on an already closed ResultSet caused an SQLException. While the exception was silently discarded, it did result in performance issues. This fix makes Connector/J comply with the Java specification that when a ResultSet object is already closed, application of the close method on it should be a no-op. (Bug #16722637, Bug #67318)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作

连接关闭MYSQL后不允许进行任何操作

MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作

错误:连接关闭后不允许进行任何操作

连接关闭错误后不允许操作的原因?

Mysql连接关闭时出现错误“ ResultSet关闭后不允许操作”

java.sql.SQLException: 连接关闭后不允许操作。数据库:mysql

ResultSet错误关闭后不允许进行操作Netbeans MySQL连接

SQLException:ResultSet关闭错误后不允许进行操作

java jdbc不允许任何操作

无法连接连接关闭连接后,无法进行任何操作。Tomcat 7中的错误

在AbstractTableModel中使用ResultSet后,在ResultSet关闭后不允许进行操作

Spring Boot + MySQL:延迟加载问题-语句关闭后不允许执行任何操作

获取java.sql.SQLException:ResultSet关闭后不允许进行操作

java.sql.SQLException:ResultSet关闭后不允许进行操作

为什么我得到java.sql.SQLException:ResultSet关闭后不允许进行操作

关闭ResultSet后,不允许执行该操作。原因

在ResultSet关闭后不允许操作,mysql

mbind:与sequel pro连接时不允许进行操作

Modbus:不允许在未连接的插座上进行操作

SQLException:java.sql.SQLException:ResultSet关闭后不允许进行操作,而ResultSet永不关闭

JDBC 连接关闭

不允许进行Rsync操作

线程“main”中的异常 java.sql.SQLException: ResultSet 关闭后不允许操作

在while循环中关闭ResultSet后不允许执行操作

在ResultSet关闭Part2后,不允许执行该操作

运行更高级的查询时,在对象关闭时不允许进行该操作

Ingenico .net SDK集成-进行任何API调用时未授权和连接关闭异常

不允许操作