Spring boot EmbeddedServletContainer - GenericJDBCException - 无法打开连接

时间:2015-10-05 19:21:19

标签: database spring-boot undertow

我正在使用EmbeddedServletContainer开发基于Spring Boot 1.3的应用程序,管理自己的数据库连接。当服务器长时间不使用时(可能在周末),由于可能存在与DB的过时连接,我开始看到下面的异常跟踪。

Wrapped by: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: Could not open connection; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) ~[spring-webmvc-4.2.1.RELEASE.jar!/:4.2.1.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) ~[spring-webmvc-4.2.1.RELEASE.jar!/:4.2.1.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) ~[javax.servlet-api-3.1.0.jar!/:3.1.0]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.2.1.RELEASE.jar!/:4.2.1.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar!/:3.1.0]
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) ~[undertow-servlet-1.2.11.Final.jar!/:1.2.11.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) ~[undertow-servlet-1.2.11.Final.jar!/:1.2.11.Final]
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:249) ~[spring-boot-actuator-1.3.0.M5.jar!/:1.3.0.M5]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.1.RELEASE.jar!/:4.2.1.RELEASE]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) ~[undertow-servlet-1.2.11.Final.jar!/:1.2.11.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) ~[undertow-servlet-1.2.11.Final.jar!/:1.2.11.Final]

我看到修复错误的唯一方法是重启服务器。无论如何,当有这样的"没有连接时,有助于服务器打开新的数据库连接。异常?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为博客here可以更好地解释这个问题。我相应地修复了它,问题不再发生了!

修复如下,在数据源配置中,我添加了以下属性:

validation-query: "SELECT 1;"
test-on-borrow: true

感谢Naresh Jain!