使用Hibernate getCurrentSession造成 "Too many connections"怎

J2EE 码拜 9年前 (2016-03-18) 1054次浏览
本人单使用Hibernate做一个项目时,使用的是getCurrentSession,按照教程得知,getCurrentSession不用调用Session.close()方法,它默认使用的是现有的session,假如没有才会新建。
可是本人在操作了多个网页之后,突然报了一个 “Too many connections”的错误
网上的方法是修改mysql的最大连接数,调整大一点
但是本人觉得这应该不是重点,由于使用一个Session不是应该只会有一个Connection吗?为什么还会报这个错误呢?
具体错误如下:
Struts Problem Report
Struts has detected an unhandled exception:
Messages:
Data source rejected establishment of connection, message from server: “Too many connections
Cannot open connection
File: com/mysql/jdbc/SQLError.java
Line number: 921
Stacktraces
org.hibernate.exception.JDBCConnectionException: Cannot open connection
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
sun.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
解决方案

10

找找最大连接数     看看连接池的概念

25

不是只有一个,而是一些。这个是典型的连接池设计模式。
原理是在连接池里初始化一批连接,需要使用时从池子里面拿一个使用,用完了放回去。
当池子里的连接都拿光了,再往里拿时,他就会说,”Too many connections”了。

5

修改下mysql服务器最大连接数设置

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用Hibernate getCurrentSession造成 "Too many connections"怎
喜欢 (0)
[1034331897@qq.com]
分享 (0)