Hibernate Session Could not open for transaction

28,504

Solution 1

This is a late answer but, I had faced same issue. It's due to improper configuration for c3po.

Please use below c3po configuration:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <property name="checkoutTimeout" value="30000" />
        <property name="idleConnectionTestPeriod" value="30"/>
        <property name="initialPoolSize" value="10" />
        <property name="maxIdleTime" value="30" />
        <property name="maxPoolSize" value="100" />
        <property name="minPoolSize" value="10" />
        <property name="maxStatements" value="10" />

</bean

Solution 2

It happens when connection in pool somehow expired and can't reconnect

https://forum.hibernate.org/viewtopic.php?f=1&t=985002

http://forums.mysql.com/read.php?39,139821,154688

Try to change pool settings (timeouts, idle_test_period, testConnectionOnCheckin etc.)

<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">100</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">60</prop>
<prop key="hibernate.c3p0.acquire_increment">2</prop>

Or if you have DataSource like this try to play with the settings

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">

    <property name="minPoolSize" value="5"/>
    <property name="maxPoolSize" value="5"/>
    <property name="maxStatements" value="500"/>
    <property name="loginTimeout" value="300"/>
    <property name="initialPoolSize" value="5"></property>
    <property name="checkoutTimeout" value="1000"/>
    <property name="automaticTestTable" value="C3P0_TEST_TABLE"></property>
    <property name="testConnectionOnCheckin" value="true"></property>
    <property name="idleConnectionTestPeriod" value="60"></property>

</bean>
Share:
28,504

Related videos on Youtube

Hemant Singh
Author by

Hemant Singh

Working as Software Engineer in Priserve Mumbai. Experience in Web Application Development and Web Designing. Primary Skill:J2EE,Jquery,Ajax,MYSQL Secondary skill:PHP

Updated on October 12, 2020

Comments

  • Hemant Singh
    Hemant Singh over 3 years

    Can some one tell about the following exception.I am getting this exception every day once i try to login for few times.but after some attempts it gone and next day it comes again.

    Following is the Exception:

    exception

    > org.springframework.web.util.NestedServletException: Request
    > processing failed; nested exception is
    > org.springframework.transaction.CannotCreateTransactionException:
    > Could not open Hibernate Session for transaction; nested exception is
    > org.hibernate.TransactionException: JDBC begin failed: 
    >   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
    >   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root
    > cause
    > 
    > org.springframework.transaction.CannotCreateTransactionException:
    > Could not open Hibernate Session for transaction; nested exception is
    > org.hibernate.TransactionException: JDBC begin failed: 
    >   org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596)
    >   org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    >   org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    >   org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    >   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   $Proxy48.loginUser(Unknown Source)
    >   com.sapat.competition_tracker.controller.AdminController.userLogin(AdminController.java:59)     sun.reflect.GeneratedMethodAccessor510.invoke(Unknown Source)
    >   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   java.lang.reflect.Method.invoke(Method.java:616)
    >   org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    >   org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:427)
    >   org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
    >   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
    >   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
    >   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    >   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root
    > cause
    > 
    > org.hibernate.TransactionException: JDBC begin failed: 
    >   org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:96)
    >   org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
    >   org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
    >   org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    >   org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    >   org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    >   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   $Proxy48.loginUser(Unknown Source)
    >   com.sapat.competition_tracker.controller.AdminController.userLogin(AdminController.java:59)     sun.reflect.GeneratedMethodAccessor510.invoke(Unknown Source)
    >   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   java.lang.reflect.Method.invoke(Method.java:616)
    >   org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    >   org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:427)
    >   org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
    >   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
    >   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
    >   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    >   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root
    > cause
    > 
    > com.mysql.jdbc.CommunicationsException: Communications link failure
    > due to underlying exception: 
    > 
    > ** BEGIN NESTED EXCEPTION ** 
    > 
    > java.io.EOFException
    > 
    > STACKTRACE:
    > 
    > java.io.EOFException  at
    > com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1963)   at
    > com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375)  at
    > com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874)    at
    > com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)     at
    > com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)  at
    > com.mysql.jdbc.Connection.execSQL(Connection.java:3243)   at
    > com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5371)     at
    > org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331)
    >   at
    > org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317)
    >   at
    > org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
    >   at
    > org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
    >   at
    > org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
    >   at
    > org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    >   at
    > org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    >   at
    > org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   at
    > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   at $Proxy48.loginUser(Unknown Source)   at
    > com.sapat.competition_tracker.controller.AdminController.userLogin(AdminController.java:59)   at sun.reflect.GeneratedMethodAccessor510.invoke(Unknown Source)    at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:616)     at
    > org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    >   at
    > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:427)
    >   at
    > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
    >   at
    > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
    >   at
    > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
    >   at
    > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    >   at
    > org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    >   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)     at
    > javax.servlet.http.HttpServlet.service(HttpServlet.java:717)  at
    > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    >   at
    > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    >   at
    > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    >   at
    > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    >   at
    > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    >   at
    > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    >   at
    > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    >   at
    > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    >   at
    > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    >   at
    > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    >   at java.lang.Thread.run(Thread.java:679)
    > 
    > 
    > ** END NESTED EXCEPTION **
    > 
    > 
    > 
    > Last packet sent to the server was 1 ms ago.
    >   com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2586)
    >   com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874)
    >   com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
    >   com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
    >   com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
    >   com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5371)
    >   org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331)
    >   org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317)
    >   org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
    >   org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
    >   org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
    >   org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    >   org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    >   org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    >   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   $Proxy48.loginUser(Unknown Source)
    >   com.sapat.competition_tracker.controller.AdminController.userLogin(AdminController.java:59)     sun.reflect.GeneratedMethodAccessor510.invoke(Unknown Source)
    >   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   java.lang.reflect.Method.invoke(Method.java:616)
    >   org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    >   org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:427)
    >   org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
    >   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
    >   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
    >   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    >   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    
  • Hemant Singh
    Hemant Singh almost 10 years
    I have tried with c3po configuration but it is not working with.Still facing same issue
  • Angelina
    Angelina over 6 years
    Did you find solution to this problem?