我在使用ibatis连接mysql数据库时,出现如下错误,在长时间未操作系统后,首次(操作)登录出现的错误。
这种问题好像是使用陈旧的数据库连接池连接问题,mysql会在长时间为使用连接时关闭数据库连接,而我又使用了此已经关闭了的连接,所以出现如下错误,这只是我自己的认识,不知道如何解决。希望的到帮助,谢谢。
我的数据库连接配置文件如下
java 代码
- "1.0" encoding="utf-8" ?>
- "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
- <sqlmapconfig></sqlmapconfig>
- "false" enhancementEnabled="true"
- lazyLoadingEnabled="true" maxRequests="32"
- maxSessions="10" maxTransactions="5"
- useStatementNamespaces="false"
- />
- "JDBC">
- "SIMPLE">
- "JDBC.Driver" value="com.mysql.jdbc.Driver"/>
- "JDBC.ConnectionURL" value="jdbc:mysql://*************?characterEncoding=GBK"/>
- "JDBC.Username" value="****"/>
- "JDBC.Password" value="*****"/>
- "Pool.MaximumActiveConnections" value="10"/>
- "Pool.MaximumIdleConnections" value="5"/>
- "Pool.MaximumCheckoutTime" value="120000"/>
- "Pool.TimeToWait" value="10000"/>
- "Pool.PingQuery" value="select * from *****"/>
- "Pool.PingEnabled" value="true"/>
- "Pool.PingConnectionsOlderThan" value="0"/>
- "Pool.PingConnectionsNotUsedFor" value="0"/>
- "**********************" />
错误输出如下:
- HTTP Status 500 -
- --------------------------------------------------------------------------------
- type Exception report
- message
- description The server encountered an internal error () that prevented it from fulfilling this request.
- exception
- com.ibatis.dao.client.DaoException: Failed to queryForList - id [getAdminByName], parameterObject [admin]. Cause: com.ibatis.common.jdbc.exception.NestedSQLException:
- --- The error occurred in com/vodone/cpms/sql/Admin.xml.
- --- The error occurred while executing query.
- --- Check the select * from admin where user_name = ? .
- --- Check the SQL Statement (preparation failed).
- --- Cause: java.sql.SQLException: No operations allowed after connection closed.
- Connection was closed due to the following exception:
- ** BEGIN NESTED EXCEPTION **
- java.sql.SQLException
- MESSAGE: Communication link failure: java.io.EOFException, underlying cause: null
- ** BEGIN NESTED EXCEPTION **
- java.io.EOFException
- STACKTRACE:
- java.io.EOFException
- at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1319)
- at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1463)
- at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1854)
- at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
- at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
- at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1164)
- at com.mysql.jdbc.Connection.execSQL(Connection.java:2087)
- at com.mysql.jdbc.Connection.execSQL(Connection.java:2049)
- at com.mysql.jdbc.Connection.execSQL(Connection.java:2030)
- at com.mysql.jdbc.Connection.rollbackNoChecks(Connection.java:3004)
- at com.mysql.jdbc.Connection.rollback(Connection.java:1458)
- at com.ibatis.common.jdbc.SimpleDataSource.popConnection(SimpleDataSource.java:621)
- at com.ibatis.common.jdbc.SimpleDataSource.getConnection(SimpleDataSource.java:215)
- at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
- at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
- at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
- at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
- at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
- at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:101)
- at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:78)
- at com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForList(SqlMapDaoTemplate.java:203)
- at com.vodone.cpms.dao.impl.AdminDaoImpl.getAdminByUserName(AdminDaoImpl.java:16)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:589)
- at com.ibatis.dao.engine.impl.DaoProxy.invoke(DaoProxy.java:72)
- at $Proxy8.getAdminByUserName(Unknown Source)
- at com.vodone.cpms.service.AdminService.getAdmin(AdminService.java:27)
- at com.vodone.cpms.servlet.ControlCenterServlet.login(ControlCenterServlet.java:559)
- at com.vodone.cpms.servlet.ControlCenterServlet.doGet(ControlCenterServlet.java:47)
- at com.vodone.cpms.servlet.ControlCenterServlet.doPost(ControlCenterServlet.java:612)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
- at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
- at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
- at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
- at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
- at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
- at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
- at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
- at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
- at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
- at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
- at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
- at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
- at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
- at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
- at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
- at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
- at java.lang.Thread.run(Thread.java:626)
- ** END NESTED EXCEPTION **
java 代码