mysql怎么创建会话_在mysql的wait_timeout之后创建会话时出现问题

我使用的是hibernate 3和mysql 5.1。当我通过mysql的wait_timeout连接到数据库时,我无法创建新的会话。它给了我以下例外。

ERROR - Communications link failure

Last packet sent to the server was 0 ms ago.

ERROR - JDBC rollback failed

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.

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:406)

at com.mysql.jdbc.Util.getInstance(Util.java:381)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)

at com.mysql.jdbc.ConnectionImpl.getMutex(ConnectionImpl.java:3032)

at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4606)

at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:183)

at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:162)

at com.arosys.hibernateDao.HibernateFactory.rollback(HibernateFactory.java:95)

at com.arosys.hibernateDao.AbstractDao.handleException(AbstractDao.java:171)

at com.arosys.hibernateDao.AbstractDao.fetchUserData(AbstractDao.java:209)

at com.arosys.beansDao.CredentialsDao.fetchUserData(CredentialsDao.java:83)

at org.ArosysLogin.server.GWTLoginImpl.myMethod(GWTLoginImpl.java:87)

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:597)

at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)

at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)

at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)

at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:662)

ERROR - Couldn't rollback Transaction

org.hibernate.TransactionException: JDBC rollback failed

at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:170)

at com.arosys.hibernateDao.HibernateFactory.rollback(HibernateFactory.java:95)

at com.arosys.hibernateDao.AbstractDao.handleException(AbstractDao.java:171)

at com.arosys.hibernateDao.AbstractDao.fetchUserData(AbstractDao.java:209)

at com.arosys.beansDao.CredentialsDao.fetchUserData(CredentialsDao.java:83)

at org.ArosysLogin.server.GWTLoginImpl.myMethod(GWTLoginImpl.java:87)

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:597)

at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)

at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)

at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)

at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:662)我知道这个异常是由于过时的SessionFactory对象造成的,它无法打开Session。当我重新启动应用程序时,它运行良好,直到它不交叉

wait_timeout time.I引用这个链接:http://www.codefin.net/2007/05/hibernate-and-mysql-connection-timeouts.html并完成相同的过程。我使用C3P0进行连接池,但出来了没有成功。

我在我的hibernate.cfg.xml文件中使用了这些属性:

org.hibernate.connection.C3P0ConnectionProvider

5

20

15我的mysql wait_timeout是30秒。

另一种方法是每次需要Session时创建一个新的SessionFactory对象,但这会产生性能问题,不想跟随它。

请告诉我,在我的配置中或者我错误的地方需要其他东西。

谢谢,

爱玛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值