Grails运行时异常:无法打开事务的Hibernate会话

Grails运行时异常:无法打开事务的Hibernate会话,hibernate,grails,Hibernate,Grails,我现在已经在tomcat服务器上开发了一个Grails web应用程序及其应用程序。我得到以下例外情况: 无法为事务打开休眠会话;嵌套异常为org.hibernate.TransactionException:JDBC begin失败: 这是第一次有人尝试使用RESTful服务。RESTful服务在第一次刷新后可以正常工作,在后续请求发出时也可以正常工作 Stacktrace如下所示: java.net.SocketException:连接重置 at java.net.SocketOutputS

我现在已经在tomcat服务器上开发了一个Grails web应用程序及其应用程序。我得到以下例外情况:

无法为事务打开休眠会话;嵌套异常为org.hibernate.TransactionException:JDBC begin失败:

这是第一次有人尝试使用RESTful服务。RESTful服务在第一次刷新后可以正常工作,在后续请求发出时也可以正常工作

Stacktrace如下所示:

java.net.SocketException:连接重置

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:96)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)

at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)

at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3333)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1971)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)

at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4997)

at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:371)

at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:328)

at $Proxy102.setAutoCommit(Unknown Source)

......


at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)

at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)

at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)

at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:897)

at java.lang.Thread.run(Thread.java:662)
非常感谢您的帮助


谢谢

我们在DataSource.groovy中使用以下内容来解决这个问题。查看@JamesA的链接,前提是它似乎也有所需的信息

dataSource {
  ...
  properties {
    ...     
    // when to test
    testOnBorrow = true
    testWhileIdle = true
    testOnReturn = false
    // what to test with
    validationQuery = "SELECT 1"
 }

}