0

i have deployed jar file on my server which is created from spring boot application. so that we have used embedded tomcat.

I have been set up the following database configured in 1-java class for this application,

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;
    }

I notice that while i am deploying for the initial few min. it's working fine. but after time passing it's get started by the following error,

     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

can any one guide me what's went wrong ? where exactly at programming side or at network side is this the issue ?

Jens Schauder
  • 77,657
  • 34
  • 181
  • 348
Vishal Gajera
  • 4,137
  • 5
  • 28
  • 55

1 Answers1

1

I assume that boot is configuring the DataSource for you. You can add the following to your application.properties

spring.datasource.validation-query= select 1

spring.datasource.test-on-borrow=true

I added these to my configuration and it works. Please check.

Subh
  • 414
  • 6
  • 14