0 0

Could not open Hibernate Session for transaction20

spring /hibernate/struts 三个框架,在周期性执行操作数据库,发生如下错误,纠结了好久,还是不能解决问题,!!!!



Exception in thread "Timer-1" org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.NullPointerException
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596)
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.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
at com.huawei.tools.dao.ConnectDBDao$$EnhancerByCGLIB$$da709791.saveObject(<generated>)
at com.huawei.tools.servic.ExecuteRecordServic.saveExecuteRecord(ExecuteRecordServic.java:13)
at com.huawei.tools.autoTestTaskMannager.ConnectClientSocket.createExecuteRecord(ConnectClientSocket.java:293)
at com.huawei.tools.autoTestTaskMannager.TimerAutoTestTask.run(TimerAutoTestTask.java:90)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.slf4j.impl.Log4jLoggerAdapter.isDebugEnabled(Log4jLoggerAdapter.java:194)
at org.hibernate.impl.SessionImpl.<init>(SessionImpl.java:247)
at org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:551)
at org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:575)
at org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:583)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:491)
... 13 more

我的applicationContext.xml配置是

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

<bean id = "dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
    dependency-check="none">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/tools?autoReconnect=true"/>
    <property name="user" value="root"/>
    <property name="password" value="7410"/>
    <property name="initialPoolSize" value="20" />  
        <property name="minPoolSize" value="10" />  
        <property name="maxPoolSize" value="60" />  
        <property name="maxIdleTime" value="3600" />  
        <property name="idleConnectionTestPeriod" value="360" />  
        <property name="preferredTestQuery" value="select 1" />  
        <property name="acquireIncrement" value="5" />  
        <property name="acquireRetryAttempts" value="50" />  
        <property name="acquireRetryDelay" value="1000" />  
        <property name="breakAfterAcquireFailure" value="true" />  
        <property name="checkoutTimeout" value="20000" />  
        <property name="autoCommitOnClose" value="false" />  
        <property name="forceIgnoreUnresolvedTransactions" value="false" />  
        <property name="unreturnedConnectionTimeout" value="1000" />  
        <property name="maxStatements" value="0" />  
        <property name="maxStatementsPerConnection" value="0" />  
        <property name="testConnectionOnCheckin" value="true" />  
        <property name="testConnectionOnCheckout" value="false" />  
        <property name="usesTraditionalReflectiveProxies" value="false" />  
        <property name="numHelperThreads" value="5" />  

</bean>


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop> 

</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/huawei/tools/entity</value>
</list>
</property>

 <!-- <property name="mappingResources"> <list> <value> com/huawei/tools/entity/Tooluser.hbm.xml 
</value></list> </property> -->
</bean>
 <!-- 配置事务管理器 -->

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务的传播属性 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"  read-only = "false"/>
<tx:method name="delete*" propagation="REQUIRED"  read-only = "false"/>
<tx:method name="update*" propagation="REQUIRED"  read-only = "false"/>
<tx:method name="get*" propagation="REQUIRED"  read-only = "false"/>
<tx:method name="*" propagation="REQUIRED"  read-only = "false"/>
</tx:attributes>
</tx:advice>
<!-- 配置事务的切入点 -->
 <aop:config proxy-target-class="true">      
  <aop:pointcut id="allManagerMethod" expression="execution(* 
com.huawei.tools.dao.*.*(..))" /> 
<aop:advisor pointcut-ref="allManagerMethod" 
advice-ref="txAdvice" /> </aop:config>  

 

2个答案 按时间排序 按投票排序

0 0

参考
http://blog.csdn.net/guohelp/article/details/1625236
http://blog.csdn.net/v_fei/article/details/3908903

2013年2月28日 18:19
0 0

mysql的重连autoReconnect参数不能使连接重连
c3p0连接池支持重连;重连参数是:
               idleConnectionTestPeriod   设置空闲连接测试周期
               preferredTestQuery : 设置一查询语句,用于重连测试
              testConnectionOnCheckin设置为true
              testConnectionOnCheckout设置为true

楼主的testConnectionOnCheckout设为false了,建议不使用c3p0

2013年2月28日 16:56

相关推荐

    Could not roll back Hibernate transaction.doc

    Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed 这表明Hibernate事务回滚操作失败,导致事务不能正确回滚。 二、问题原因 该问题的...

    Hibernate_Session_Transaction

    在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...

    HibernateSession , Transaction 研究

    本文将深入研究Hibernate中的`Session`和`Transaction`,这两个概念是理解Hibernate工作原理的关键。 首先,让我们了解`Session`。在Hibernate中,`Session`充当了应用程序与数据库之间的桥梁,它是持久化操作的...

    Hibernate+Transaction+myeclipse6+事例+工程源码.rar

    《深入理解Hibernate+Transaction在MyEclipse6中的应用实践》 在现代的Java Web开发中,数据持久化是一个至关重要的环节。Hibernate作为一种流行的Object-Relational Mapping(ORM)框架,极大地简化了数据库操作,...

    Hibernate Session释放模式

    在Java的持久化框架Hibernate中,Session对象是与数据库交互的核心组件,它负责管理对象的持久状态。在处理大量数据或者长时间运行的事务时,合理地管理Session的生命周期至关重要,这就涉及到了Hibernate的Session...

    hibernate session生命周期示例

    本示例将深入探讨Hibernate Session的生命周期及其使用,帮助你更好地理解和运用这个强大的工具。 Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括...

    hibernate和session学习

    【hibernate与Session详解】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。通过Hibernate,我们可以将数据库中的表与Java类进行映射,从而实现对...

    Hibernate(session管理)

    本文将深入探讨Hibernate中的核心概念——Session管理。 首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,...

    对Hibernate Session做一个简单的包装

    1. **事务管理**:在执行一系列数据库操作时,我们可以使用`Session`的`beginTransaction()`和`commit()`方法开启和提交事务。为了确保数据一致性,我们需要在发生异常时回滚事务,这可以通过`Session`的`rollback()...

    Hibernate的Session的javadoc

    Hibernate的Session接口是Java应用程序与Hibernate之间主要的运行时交互接口,它提供了对持久化对象的创建、读取和删除操作。Session的概念是基于对象的状态管理和数据库事务的,它的生命周期通常与一个物理事务绑定...

    hibernate中session的管理

    3. **Open Session in View (OSIV)**:在视图渲染阶段保持Session打开,以允许最后时刻的懒加载,但需要注意防止Session泄露。 总的来说,Hibernate中Session的管理是保证多线程环境下数据一致性的重要环节。...

    hibernate session详细方法,值得珍藏

    ### Hibernate Session 详解:值得珍藏的深度解析 在Java持久化领域,Hibernate无疑占据了举足轻重的地位,而`Hibernate Session`则是其中的核心组件之一,它提供了与数据库交互的主要接口,是对象/关系映射(ORM)...

    hibernate session.doc

    Transaction tx1 = session1.beginTransaction(); // 加载一个持久化对象 Customer customer = (Customer) session.get(Customer.class, new Long(1)); session.delete(customer); // 计划执行一个delete语句 tx1...

    spring-hibernate-maven-transaction整合

    【Spring与Hibernate、Maven和Transaction的整合】 在现代Java Web开发中,Spring框架、Hibernate持久化工具和Maven构建工具是不可或缺的部分。Spring提供了强大的依赖注入和面向切面编程能力,Hibernate则简化了...

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    本篇文章主要关注如何通过Hibernate的Session接口来操纵对象,实现数据的持久化。 首先,我们需要理解Session在Hibernate中的角色。Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、...

    Hibernate_11session

    《深入理解Hibernate Session:从配置到实践》 Hibernate,作为Java领域中一款广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。在Hibernate中,Session是连接应用程序和数据库的重要桥梁,它负责对象...

    Open_Session_In_View详解.doc

    Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition ``` 这个问题通常是由于在`Open ...

    集成spring的hibernate懒加载

    在Spring整合Hibernate的情况下,Session通常通过Transaction Management进行管理,比如使用`Open Session in View`(OSIV)模式或者基于注解的事务管理。 当你尝试在Controller层或者视图层访问懒加载的属性时,...

    dbcp 连接池不合理的锁导致连接耗尽解决方案

    在提供的堆栈跟踪中,可以看到`NoSuchElementException: Timeout waiting for idle object`异常,这通常表示线程在等待连接池中的空闲连接时超时,即没有在预设时间内获取到连接。这可能是因为: 1. **连接池大小...

Global site tag (gtag.js) - Google Analytics