我开发了一个小的Heroku + Grails + Postreg应用程序。部署后20分钟它会工作正常,之后我总是得到:
This connection has been closed.. Stacktrace follows: Heroku/myapp
- org.postgresql.util.PSQLException: This connection has been closed. Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:837) Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.getAutoCommit(AbstractJdbc2Connection.java:798) Heroku/myapp
- at org.grails.datastore.gorm.GormStaticApi$_methodMissing_closure2.doCall(GormStaticApi.groovy:102) Heroku/myapp
- at com.myapp.WorkspaceController.list(WorkspaceController.groovy:18) Heroku/myapp
- at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) Heroku/myapp
- at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) Heroku/myapp
- at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) Heroku/myapp
- at java.lang.Thread.run(Thread.java:745) Heroku/myapp
- 2015-08-07 15:11:10,685 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been closed. Heroku/myapp
- 2015-08-07 15:11:10,689 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been closed. Heroku/myapp
- 2015-08-07 15:11:10,696 [http-nio-20850-exec-5] ERROR errors.GrailsExceptionResolver - PSQLException occurred when processing request: [GET] /api/users/21/workspaces Heroku/myapp
- This connection has been closed.. Stacktrace follows: Heroku/myapp
答案 0 :(得分:6)
我已经通过将其添加到DataSource.groovy来解决了这个问题:
<html>
<head>
<title>tester</title>
</head>
<body>
<table width="100%">
<tr>
<td>
<table style="border:1px solid black;border-collapse:collapse;float:left;margin:10px">
<th style="border:1px solid black;padding:3px" bgcolor="#DDDDDD" align="left">First</th>
<th style="border:1px solid black;padding:3px" bgcolor="#DDDDDD" align="left">last</th>
<tr bgcolor="#FFFFFF" style ="height:23px;">
<td style="border:1px solid black;padding:3px" align="left"><code> </code></td>
<td style="border:1px solid black;padding:3px" align="right"><code> </code></td>
</tr>
<tr bgcolor="#FFFFFF">
<td style="border:1px solid black;padding:3px" align="left"><code>Bob</code></td>
<td style="border:1px solid black;padding:3px" align="left"><code>Smith</code></td>
</tr>
</table>
</td>
<td>
<table style="border:1px solid black;border-collapse:collapse;float:left;margin:10px">
<th style="border:1px solid black;padding:3px" bgcolor="#DDDDDD" align="left">First</th>
<th style="border:1px solid black;padding:3px" bgcolor="#DDDDDD" align="left">last</th>
<tr bgcolor="#FFFFFF" style ="height:23px;">
<td style="border:1px solid black;padding:3px" align="left"><code> </code></td>
<td style="border:1px solid black;padding:3px" align="right"><code> </code></td>
</tr>
<tr bgcolor="#FFFFFF">
<td style="border:1px solid black;padding:3px" align="left"><code>Stevev</code></td>
<td style="border:1px solid black;padding:3px" align="left"><code>Clarck</code></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
答案 1 :(得分:2)
@Macchiatow的答案和@ Jonik的评论的组合,这是我以前工作的,具有较少的属性:
dataSource {
pooled = true
properties {
testOnBorrow = true
testWhileIdle = true
testOnReturn = true
validationQuery = "SELECT 1"
}
driverClassName = "org.postgresql.Driver"
dialect = "..."
}