2015-10-05 3 views
0

Я разрабатываю приложение Spring Boot 1.3 с помощью EmbeddedServletContainer, управляя его собственными связями с БД. Когда сервер остается неиспользованным в течение длительного времени (вероятно, в выходные дни), поскольку, возможно, были устаревшие подключения к БД, я начал видеть следующую трассировку исключения.Spring boot EmbeddedServletContainer - GenericJDBCException - Не удалось открыть соединение

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] 

Единственный способ устранить ошибку - перезапустить сервер. В любом случае, это поможет серверу открыть новое соединение с БД при наличии таких исключений «без соединения»?

Спасибо!

+0

Возможно, что ваши соединения не закрываются, и в пуле соединений больше нет подключений или не достигнуто ограничение на стороне сервера. –

+0

Сервер не достиг предела. Это я уверен. Но, в другом сценарии отсутствия связи в пуле соединений, не имеет смысла автоматически создавать его? – rakpan

+0

Когда соединения, определенные в пуле, превышены, пул не будет создавать больше. –

ответ

0

Я думаю, что блог here лучше объясняет проблему. Я исправил его соответственно, и проблема больше не возникает!

Исправление как ниже, на конфигурации источника данных, я добавил следующие свойства:

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

Благодаря Naresh джайнийские!

Смежные вопросы