系统上线,急急急! Hibernate 非常奇怪的问题 org.hibernate.TransactionException: JDBC rollback failed
系统刚刚部署好的当天,访问几个系统没有问题,到了第二天访问该系统便会报错:org.hibernate.TransactionException: JDBC rollback failed,这个时候再重启tomcat一切又都好用了。也可以通过下面的方法测试,重新启动tomcat,一切好用,更改服务器的日期为第二天,结果几个系统就开始报错了。
网上的解决方法如下:
方法一:上网查了一下,有人说是数据库事务的原因,要把hibernate的autocommit设为false,我找了一下这个好像要在代码里面设置,而不能通过简单的设置Hibernate的配置文件来设置,就没有继续走这条路。后来想到可能是数据库连接池的原因。
方法二:在hibernate配置文件中加入对c3p0连接池的配置,同时将c3p0-0.8.4.5.jar拷贝到应用的lib文件夹下。这里说明一下,如果没有这个配置,hibernate默认使用其自身的数据库连接池。配置后则采用第三方的c3p0连接池。
使用c3p0连接池后确实没有问题了,但是我还是不明白为什么使用默认的连接池会有问题,如果哪位大哥清楚麻烦回复一下啊,谢谢!
代码如下:
public boolean login(String userName, String password) throws Exception {
Session session = HibernateUtil.currentSession();
Transaction tx = null;
ArrayList userslist = null;
//String isActiva=null;
try {
tx = session.beginTransaction();
Query query = session.createQuery(
"from SysUser as user where user.userName=:userName and user.userPassword=:userPassword and user.isActivation=1");
query.setString("userName", userName);
query.setString("userPassword", password);
userslist = (ArrayList) query.list();
tx.commit();
} catch (Exception e) {
if (tx != null) {
//tx.rollback();
}
throw e;
} finally {
tx = null;
HibernateUtil.closeSession();
}
if (userslist == null ¦ ¦ userslist.size() == 0) {
return false;
} else {
return true;
}
}
请问高手,有没有更好的方法,以上解决的方法有效吗?现在系统上线,急急急!
tomcat,报错的异常如下:
2008-01-07 09:17:25 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
org.hibernate.TransactionException: JDBC rollback failed
at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:170)
at com.jandar.info.dao.SysUserDAO.login(SysUserDAO.java:250)
at com.jandar.info.actions.LoginAction.execute(LoginAction.java:49)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.jandar.info.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
at com.mysql.jdbc.Connection.getMutex(Connection.java:3588)
at com.mysql.jdbc.Connection.rollback(Connection.java:5035)
at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:183)
at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:162)
... 35 more
相关推荐
PDF发票内容提取排版并结构化导出xlsx/cvs嵌入式ptyhon
【本地发票提取工具】 核心优势:不依赖传统粗糙 OCR,基于文字排版结构进行精准提取。仅“税网”下载及税网邮件发送的原版 PDF 发票(开票软件发送的不太支持)能实现开票明细级的秒级本地提取,告别只能提抬头、总额的尴尬。 可免费试用 3 天! 【用前须知】 去微软官网下载VC_redist.x64.exe运行修复运行库(必要的前置操作),之后再解压本工具rar,运行本exe即可。 VC_redist.x64.exe官网永久下载地址 https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist 【安全须知】 个人开发暂未做代码签名,杀软可能会有误报拦截。遇到拦截请在杀软中添加信任/白名单即可。 VirusTotal扫描结果 2/61,主流杀软均通过,个别引擎因无签名误报。官网 virustotal.com 点击页面中间显眼的 “Choose file”(选择文件)按钮上传扫描。
110KV单电源电网三段式电流保护+距离继电保护整定计算说明报告(23页+6000字)
内容概要:本文是一份针对110kV单电源电网继电保护系统的综合性技术报告,系统阐述了三段式电流保护与距离保护的整定计算原理及工程应用方法。报告深入分析了电力系统短路故障的电气特征,依据国家及行业相关继电保护规程,详细推导并计算了各段保护的动作电流、动作时限及灵敏度系数,实现了主保护与后备保护之间的选择性配合。文中不仅涵盖了保护配置原则、整定计算公式的理论推导,还结合具体算例进行验证,对比分析了两种保护方式的优缺点、适用场景及协同工作机制,具有较强的理论深度与实践指导价值。; 适合人群:电气工程及其自动化专业的高年级本科生、研究生,以及从事电力系统规划设计、继电保护整定计算、变电站运维等工作的工程技术人员。; 使用场景及目标:①掌握高压输电线路三段式电流保护与距离保护的核心原理及整定流程;②用于实际电网中保护定值的计算、校验与优化调整;③作为高校电力系统继电保护课程设计、毕业设计或科研项目的参考技术资料。; 阅读建议:建议结合《电力系统分析》《继电保护原理》等教材同步研读,重点理解整定计算的逻辑步骤与参数选取依据,并推荐使用MATLAB或电力系统仿真软件对文中的算例进行建模验证,以加深对保护动作特性的理解。
基于Matlab的35KV三段式电流保护仿真设计
内容概要:本文系统阐述了基于Matlab/Simulink平台开展35KV三段式电流保护的仿真设计方法,深入剖析电力系统中短路故障特性及继电保护动作逻辑,重点实现瞬时速断、限时速断与过电流保护三段式保护的整定计算与协同配合。通过构建完整的35KV输电线路仿真模型,模拟多种故障工况下的电气量变化,验证保护装置的动作选择性、速动性、灵敏性和可靠性,全面展示从理论分析、参数整定到仿真建模与结果验证的完整设计流程,旨在深化对继电保护原理的理解与工程应用能力。; 适合人群:适用于具备电力系统分析、继电保护基本理论知识,且熟悉Matlab/Simulink仿真工具的电气工程专业本科生、研究生,以及从事电力系统规划设计、继电保护整定计算与运维工作的工程技术人员。; 使用场景及目标:①作为高等院校电力系统继电保护课程设计、毕业设计或实验教学的仿真实践参考;②服务于实际工程中35KV线路保护方案的前期验证与参数优化;③帮助学习者系统掌握三段式电流保护的整定原则、时限配合机制及仿真调试技巧。; 阅读建议:建议结合经典继电保护教材进行对照学习,先透彻理解保护原理与整定计算方法,再动手搭建仿真模型。应重点关注故障类型设置、保护定值计算、仿真波形分析等关键环节,并尝试改变系统参数或故障位置,观察保护动作行为的变化,以深入理解保护逻辑与系统特性的相互关系。
智能仓库管理系统V3.6 仓库管理系统 仓管系统 进销存
软件定位:为现场人员做的仓库管理工具 智能仓库管理系统 V3.6 是一套面向中小型工厂、仓库、车间和贸易公司的 Windows 单机版进销存管理软件。它不追求复杂的企业级配置,而是把仓库现场最常做的事——商品建档、入库、出库、查库存、查流水、导报表——做成一套打开就能用、现场人员容易上手的工具。 软件采用本地数据存储,不需要购买服务器、不需要联网、不需要安装数据库,也不需要专职 IT 人员维护。所有数据保存在安装目录的 Data 文件夹中,复制 Data 文件夹即可完成备份或迁移。对于没有信息部门、但又不愿继续用 Excel 手工记账的仓库来说,这种“一台电脑、一套软件、一个数据文件夹”的方式,反而更稳定、更容易长期使用。 适合哪些用户 商品种类多、型号多、品牌多,靠 Excel 容易重复、漏记、对不上账的仓库。 每天有多次入库、出库,需要知道每一笔是谁操作、什么时候操作、对应哪张单的仓库。 需要给主管或客户导出流水报表,但又不想购买复杂 ERP 的小型工厂和贸易公司。 希望把商品图片、单据图片、操作记录一起留档,出现数量或责任争议时能查得清的用户。 V3.6 的优势: 1.单机运行,无需服务器、数据库和网络; 2.一张入库/出库单最多录入 10 项不同商品或型号; 3.数量直接输入,支持 100、1000 等大批量; 4.商品编号支持一级代码、二级代码、6 位数字自定义; 5.库存实时重算、安全库存预警; 6.物资流水按商品—月份—单条三级展开; 7.流水图片可预览、可另存; 8.报表先预览再导出,导出字段可追溯; 9.操作记录加密隐藏、软件内不可删除; 10.软删除保留历史、主管/仓管权限清晰; 11.数据、LOGO、图片、操作记录一键迁移;
chrome-headless-shell-win64-156.0.8078.80(Stable).zip
chrome-headless-shell-win64-156.0.8078.80(Stable).zip


