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>
相关推荐
Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed 这表明Hibernate事务回滚操作失败,导致事务不能正确回滚。 二、问题原因 该问题的...
在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...
本文将深入研究Hibernate中的`Session`和`Transaction`,这两个概念是理解Hibernate工作原理的关键。 首先,让我们了解`Session`。在Hibernate中,`Session`充当了应用程序与数据库之间的桥梁,它是持久化操作的...
《深入理解Hibernate+Transaction在MyEclipse6中的应用实践》 在现代的Java Web开发中,数据持久化是一个至关重要的环节。Hibernate作为一种流行的Object-Relational Mapping(ORM)框架,极大地简化了数据库操作,...
在Java的持久化框架Hibernate中,Session对象是与数据库交互的核心组件,它负责管理对象的持久状态。在处理大量数据或者长时间运行的事务时,合理地管理Session的生命周期至关重要,这就涉及到了Hibernate的Session...
本示例将深入探讨Hibernate Session的生命周期及其使用,帮助你更好地理解和运用这个强大的工具。 Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括...
【hibernate与Session详解】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。通过Hibernate,我们可以将数据库中的表与Java类进行映射,从而实现对...
本文将深入探讨Hibernate中的核心概念——Session管理。 首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,...
1. **事务管理**:在执行一系列数据库操作时,我们可以使用`Session`的`beginTransaction()`和`commit()`方法开启和提交事务。为了确保数据一致性,我们需要在发生异常时回滚事务,这可以通过`Session`的`rollback()...
Hibernate的Session接口是Java应用程序与Hibernate之间主要的运行时交互接口,它提供了对持久化对象的创建、读取和删除操作。Session的概念是基于对象的状态管理和数据库事务的,它的生命周期通常与一个物理事务绑定...
3. **Open Session in View (OSIV)**:在视图渲染阶段保持Session打开,以允许最后时刻的懒加载,但需要注意防止Session泄露。 总的来说,Hibernate中Session的管理是保证多线程环境下数据一致性的重要环节。...
### Hibernate Session 详解:值得珍藏的深度解析 在Java持久化领域,Hibernate无疑占据了举足轻重的地位,而`Hibernate Session`则是其中的核心组件之一,它提供了与数据库交互的主要接口,是对象/关系映射(ORM)...
Transaction tx1 = session1.beginTransaction(); // 加载一个持久化对象 Customer customer = (Customer) session.get(Customer.class, new Long(1)); session.delete(customer); // 计划执行一个delete语句 tx1...
【Spring与Hibernate、Maven和Transaction的整合】 在现代Java Web开发中,Spring框架、Hibernate持久化工具和Maven构建工具是不可或缺的部分。Spring提供了强大的依赖注入和面向切面编程能力,Hibernate则简化了...
本篇文章主要关注如何通过Hibernate的Session接口来操纵对象,实现数据的持久化。 首先,我们需要理解Session在Hibernate中的角色。Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、...
《深入理解Hibernate Session:从配置到实践》 Hibernate,作为Java领域中一款广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。在Hibernate中,Session是连接应用程序和数据库的重要桥梁,它负责对象...
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的情况下,Session通常通过Transaction Management进行管理,比如使用`Open Session in View`(OSIV)模式或者基于注解的事务管理。 当你尝试在Controller层或者视图层访问懒加载的属性时,...
在提供的堆栈跟踪中,可以看到`NoSuchElementException: Timeout waiting for idle object`异常,这通常表示线程在等待连接池中的空闲连接时超时,即没有在预设时间内获取到连接。这可能是因为: 1. **连接池大小...