0

Ich habe jar Datei auf meinem server, die von spring boot application erstellt wird, bereitgestellt. so dass wir embedded tomcat verwendet haben.IO-Fehler: Zeitüberschreitung der Verbindung im Spring-Boot nach einiger Zeit der Bereitstellung der JAR-Datei?

Ich habe für dieses application die folgende database configured in 1- java Klasse einzurichten,

import org.apache.commons.dbcp.BasicDataSource; 
    ... 
    @Bean 
    public DataSource dataSource() { 
     //DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName(environment.getRequiredProperty("spring.datasource.driverClassName")); 
     dataSource.setUrl(environment.getRequiredProperty("spring.datasource.url")); 
     dataSource.setUsername(environment.getRequiredProperty("spring.datasource.username")); 
     dataSource.setPassword(environment.getRequiredProperty("spring.datasource.password")); 
     dataSource.setMaxActive(10); 
     dataSource.setMaxIdle(3); 
     dataSource.setMaxWait(environment.getRequiredProperty("spring.datasource.tomcat.max-wait")); 
     dataSource.setTestOnBorrow(environment.getRequiredProperty("spring.datasource.tomcat.test-on-borrow")); 
     dataSource.setInitialSize(environment.getRequiredProperty("spring.datasource.tomcat.initial-size")); 
     return dataSource; 
    } 

Ich stelle fest, dass, während ich für die ersten paar Minuten bin bereitstellen. es funktioniert gut. aber nach Zeit vergeht es durch die folgenden Fehler zu beginnen,

 WARN SQL Error: 17002, SQLState: 08006 
    ERROR IO Error: Connection timed out (Read failed) 
    WARN SQL Error: 0, SQLState: null 
    ERROR Already closed. 
    ERROR Forwarding to error page from request [/client] due to exception [Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Unable to commit against JDBC Connection] 
    org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Unable to commit against JDBC Connection 
     at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:586) ~[spring-orm-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761) ~[spring-tx-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730) ~[spring-tx-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504) ~[spring-tx-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292) ~[spring-tx-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) ~[spring-tx-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) ~[spring-data-jpa-1.11.0.RELEASE.jar!/:?] 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) ~[spring-data-commons-1.13.0.RELEASE.jar!/:?] 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
     at com.sun.proxy.$Proxy129.findUserWithCompanyInfo(Unknown Source) ~ 
[?:?] 
Caused by: org.hibernate.TransactionException: Unable to commit against JDBC Connection 
    at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:86) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:232) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:582) ~[spring-orm-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
    ... 111 more 
Caused by: java.sql.SQLRecoverableException: IO Error: Connection timed out (Read failed) 
    at oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:665) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3901) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3907) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:301) ~[commons-dbcp-1.2.2.jar!/:1.2.2] 
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:200) ~[commons-dbcp-1.2.2.jar!/:1.2.2] 
    at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:80) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:232) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:582) ~[spring-orm-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
    ... 111 more 
Caused by: java.net.SocketException: Connection timed out (Read failed) 
    at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_121] 
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_121] 
    at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_121] 
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_121] 
    at oracle.net.ns.Packet.receive(Packet.java:300) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.net.ns.DataPacket.receive(DataPacket.java:106) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4C7Ocommoncall.doOCOMMIT(T4C7Ocommoncall.java:75) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:610) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3901) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3907) ~[ojdbc6-11.2.0.3.jar!/:11.2.0.3.0] 
    at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:301) ~[commons-dbcp-1.2.2.jar!/:1.2.2] 
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:200) ~[commons-dbcp-1.2.2.jar!/:1.2.2] 
    at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:80) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:232) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65) ~[hibernate-core-5.0.11.Final.jar!/:5.0.11.Final] 
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:582) ~[spring-orm-4.3.6.RELEASE.jar!/:4.3.6.RELEASE] 
    ... 111 more 

kann eine beliebige Führung ich, was falsch gelaufen ist? wo genau bei programming side oder bei network side ist dies die issue?

+0

Verwenden Sie autoReconnect = true in spring.datasource.url? – Subh

+0

Welche Version von Spring boot verwenden Sie? – Subh

+0

@Subh ich benutze 1.5.1.RELEASE Version von Spring Boot –

Antwort

0

Ich nehme an, dass Boot die DataSource für Sie konfiguriert. Sie können die folgenden auf Ihre application.properties

spring.datasource.validation-Abfrage hinzufügen = 1 wählen

spring.datasource.test-on-borrow = true

ich diese meine Konfiguration hinzugefügt und Es klappt. Bitte prüfe.

+0

Das wird nichts in seinem Fall tun, da er seine eigene Datenquelle konfiguriert ... –

Verwandte Themen