错误日记 quartz No Session found for current thread

SpringMVC+Spring3+Hibernate Quartz定时任务调用service查询获取不到CurrentSession 需求:         起一个定时任务,定时检索数据库中记录最后更新时间戳,超时报警,Job中关于service代码如下: WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();           UserService service=wac.getBean(UserService .c 阅读详情

错误原因:事务控制没有做好

原因详细:在spring的事务传播中,错误的将事务的传播特性配置成了

<span style="font-family:Microsoft YaHei;font-size:14px;"><tx:method name="*" propagation="SUPPORTS" /></span>

而Quartz的定时调度是需要启动子线程的。

SessionFactory的getCurrentSession并不能保证在没有当前Session的情况下会自动创建一个新的,这取决于CurrentSessionContext的实现,SessionFactory将调用CurrentSessionContext的currentSession()方法来获得Session。在Spring中,如果我们在没有配置TransactionManager/transactionAdvice并且没有事先调用SessionFactory.openSession()的情况直接调用getCurrentSession(),那么程序将抛出“No Session found for current thread”异常。如果配置了TranactionManager/transactionAdvice并且通过@Transactional或者声明的方式配置的事务边界,那么Spring会在开始事务之前通过AOP的方式为当前线程创建Session,此时调用getCurrentSession()将得到正确结果。

事务的传播特性定义如下

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 
表1事务传播行为类型 
事务传播行为类型说明 
1.PROPAGATION_REQUIRED 
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 
2.PROPAGATION_SUPPORTS 
支持当前事务,如果当前没有事务,就以非事务方式执行。 
3.PROPAGATION_MANDATORY 
使用当前的事务,如果当前没有事务,就抛出异常。 
4.PROPAGATION_REQUIRES_NEW 
新建事务,如果当前存在事务,把当前事务挂起。 
5.PROPAGATION_NOT_SUPPORTED 
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 
6.PROPAGATION_NEVER 
以非事务方式执行,如果当前存在事务,则抛出异常。 
7.PROPAGATION_NESTED 
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。 
当使用PROPAGATION_NESTED时,底层的数据源必须基于JDBC 3.0,并且实现者需要支持保存点事务机制。 


压电阀控制器设计-总章 本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论 阅读详情

相关推荐

VSCode+Pyside6开发环境配置全攻略:从安装到实战UI设计

本文提供了一份详细的VSCode与Pyside6集成开发环境配置指南。从创建Python虚拟环境、安装必备VSCode插件,到深度配置PYQT Integration插件以打通Qt Designer与代码编译,最后通过一个待办事项应用实战演示了从UI设计到业务逻辑绑定的完整工作流,旨在帮助开发者建立高效、可维护的GUI开发环境。

qq_27496129的博客 980

解决Quartz定时器中查询懒加载数据no session的问题

相信大家在web开发过程中一定遇到过一种情况,Class班级类一对多关联一个Student学生类,所以为了性能考虑,配置一个lazy-init=true,然后在前台页面需要访问懒加载数据时需要额外配置一个OpenSessionInViewFilter,但是可能并不知道这个过滤器到底做了什么,遇到Quartz定时中访问懒加载问题配置这个filter可没有用了,下面来讨论下,怎么解决这个问题。实验之前先

徐靖峰的专栏 6093

spring-ai 1.0.0 学习(四)——提示词管理

摘要:本文介绍Spring AI中提示词管理的最佳实践。首先展示基础样例,指出直接传递用户输入的局限性。随后分析优质提示词应包含系统消息、上下文信息、输出结构和问答样例四要素。文章详述两种实现方式:链式调用(使用ChatClient构建器)和传统对象创建方法。进阶部分涵盖核心接口(Prompt、Message等)、消息类型、模板渲染配置(支持自定义)及提示词工程技巧(如RAG、任务分解)。最后提及高级功能如少样本模板和提示词库。全文强调结构化提示词对提升AI输出质量的关键作用,并展示Spring AI的灵活

hzp的专栏 1365

终于解决了:No Session found for current thread

使用Spring+Hibernate,获取数据库Session时,总是抛出异常:No Session found for current thread。 在网卡找了好几天,终于解决 http://blog.youkuaiyun.com/greensurfer/article/details/8982876 现将我自己的配置贴出来 Spring配置文件spring.xml内容如下: <

lijing_lj928的专栏 1万+

KLayout教程(二)编辑不同的形状

首先画一个基础的矩形,然后双击他可以定义他的坐标

集成光电子 1万+

川崎机器人 AS语言基础运动指令表

    功能简介 动作方式 参考坐标系 位置特性 X,Y,Z 角度特性 O,A,T 指令格式(距离单位毫米,时间单位秒,角度单位度 示例1 示例2 运 动 指 令 JMOVE 以关节移动到目标点 关节移动方式 基础坐标系 不受控 伪随机动作 JMOVE 目标点 JMOVE #yd JMOVE put1 LMOVE 以直线移动到目标点 直线移动方式

喜欢自学并分享经验的技术宅 9350

spring+hibernate下使用quartz出现no session的解决方法

在google上找了很久没有合适的解决办法,通常的建议是把hibernate的lazy改成false或者直接写sql。为了调度而启用lazy显然是不划算的。自己写sql,那就弃用了hibernate,两种方式都让人难以接收。最后看到一提示,spring可以使用OpenSessionInViewFilter和hibernateInterceptor来扩展hibernate的session,避...

南音 746

高性能C#上位机:多串口并发,百万数据不卡顿

去年做了一个环境监测项目,要对接32个串口传感器,每个传感器每秒发10条数据,一天下来就是2700多万条数据,之前的老程序跑起来UI直接卡死,数据丢包率高达10%,存到数据库要卡半天,客户要求数据丢包率为0,UI响应延迟≤100ms,百万级数据查询≤1s。这套多串口通信方案已经用在了我们公司10多个项目上,最多支持64个串口同时并发,每秒处理3000条数据,完全不卡顿,数据零丢包,客户非常满意,最近做的一个光伏监测项目,对接了48个串口传感器,稳定运行了6个月,没有出过任何问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 425

遇到当前线程无session的问题No Session found for current thread

今天在开发程序时,发生了一个错误,系统报No Session found for current thread 异常。根据网上搜索的结果,把问题解决了,这里总结一下。 Hibernate中SessionFactory的getCurrentSession并不能保证在没有当前Session的情况下会自动创建一个新的,是否自动创建新的取决于CurrentSessionContext的实现,SessionFactory将调用CurrentSessionContext的currentSess...

zibingdechengbao的博客 3002

Unlocking Decoding-time Controllability: Gradient-FreeMulti-Objective Alignment with Contrastive Pr

将基于庞大网络语料库训练的大型语言模型(LLMs)(OpenAI,2023;Touvron 等,2023;Google,2023)与人类偏好对齐,是减少产生不安全(Wei 等,2023)、幻觉(Zhang 等,2023b)和有偏见(Gallegos 等,2023)内容的重要一步。随着偏好学习技术(如 PPO(Schulman 等,2017)、DPO(Rafailov 等,2023)及其他变体(Azar 等,2023;Ethayarajh 等,2024;

qq_52053775的博客 1169

2023年12月青少年C/C++软件编程(三级)等级考试试卷及答案解析

有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。输出为一行,表达式的值。任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。

长春高老师编程 1511

Spring+Quartz+Hibernate做定时任务时不能获得Session的解决方法

今天在做项目是遇到,Spring+Quartz+Hibernate做定时任务时不能获得Session;记录下来方便以后查看 方案如下: http://forum.spring.io/forum/spring-projects/container/102822-how-to-get-a-quartz-job-to-use-a-hibernate-transaction-session...

Yuit 5586

5大绝招破解.NET Core本地IP访问难题——为什么你的调试总卡在localhost?

摘要: 本文详解5种本地IP访问.NET Core应用的方法,涵盖基础IP绑定(0.0.0.0)、防火墙配置、IIS Express优化、远程调试及ngrok内网穿透。关键步骤包括修改launchSettings.json、PowerShell授权端口、SSH远程调试和ngrok外网映射,并提示常见陷阱(如未绑定IP、防火墙拦截)。通过“魔法法则”组合,可实现局域网/外网高效访问,适用于开发测试场景。 (字数:148)

java专栏 955

解决quartz在spring中,无法获得session的问题

框架:spring+Struts2 尝试1: protected Map getSession() throws Exception { return ActionContext.getContext().getSession(); } 结果:ActionContext空指针异常; 尝试2: public static HttpServletRequest getRequest(){ HttpServletRequest req = ((Serv

qq_41283321的博客 775

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

spring quartz hibernate no session 的问题

在ssh中整合quartz 定时任务过程中 使用hibernate操作数据库时会出现 no session 的情况. 产生原因 我们使用spring为解决hibernate在web请求中开启关闭问题使用了OpenSessionInViewFilter做延迟加载, 看OpenSessionInViewFilter的源码 可知, 这个东东需要httprequest 和 httpRespons

mingjie1212的博客 1631

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

spring 任务调度中出现懒加载 no session 问题

相信大家在web开发过程中一定遇到过一种情况,Class班级类一对多关联一个Student学生类,所以为了性能考虑,配置一个lazy-init=true,然后在前台页面需要访问懒加载数据时需要额外配置一个OpenSessionInViewFilter,但是可能并不知道这个过滤器到底做了什么,遇到Quartz定时中访问懒加载问题配置这个filter可没有用了,下面来讨论下,怎么解决这个问题。@Enti

talk is cheap 2831

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SpringMVC quartz 无法注入service和no session问题

在给项目添加定时任务的时候,想要注入service时失败 查询资料得出 spring配置文件里面要有context:component-scan 扫描到你的定时任务类 而且在类上加@Component就行了。 而没有no session问题是因为事务原因,所以需要在方法上面添加@Transactional 就可以了

TOP_Y的专栏 810

解决no session问题的三种方式

  1.get() 采用立即加载方式,而 load() 采用延迟加载; 2.get() 方法执行的时候,会立即向数据库发出查询语句,而 load() 方法返回的是一个代理(此代理中只有一个 OID 属性),只有等真正使用该对象属性的时候,才会发出 sql 语句并执行   3.如果数据库中没有对应的记录 , get() 方法返回的是 null . 而 load() 方法出现异常 Objec...

Mountain_YS的博客 9415

Spring Boot 集成 Actuator 监控工具

Spring Boot Actuator 提供了对 SpringBoot 应用程序(可以是生产环境)监视和管理的能力, 可以选择通过使用 **HTTP Endpoint** 或使用 **JMX** 来管理和监控 SpringBoot 应用程序。

欲变世界,先变其身 982

SpringBoot整合任务调度框架Quartz及持久化配置

文章目录本篇要点SpringBoot与Quartz单机版快速整合引入依赖创建Job调度器Scheduler绑定自动配置,这里演示SimpleScheduleBuilder手动配置,这里演示CronScheduleBuilderyml配置主启动类测试Quartz持久化配置创建数据库表引入mysql相关依赖配置yml配置数据源创建任务启动测试源码下载参考阅读 本文侧重SpringBoot与Quartz的整合,Quartz的基本入门概念不清楚的小伙伴可以看看这篇文章:任务调度框架Quartz快速入门! 本篇要

天乔巴夏丶 1310

Spring Boot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除

Quartz

Angus博客 6218

Springboot + Quartz 实现分布式定时任务集群

一、什么是 Quartz? 如果仅仅只是使用定时任务,可以使用 spring 的schedule 实现,方便、代码量少、易于实现。但是当使用分布式进行部署的时候,就会出现所有的服务器都在跑同一个定时任务,出现一个定时任务被执行多次的情况。那么最好的方式是使用 quartz 进行定时任务的调度。即:quartz 是一个为了解决分布式定时任务的导致任务重复调度的框架。效果就是,起多个工程,同一个定时任务只会在一个工程上跑。

陌守 1万+
上一篇: 修改tomcat命令窗口名称
下一篇: VIA驱动不自动切换
MTU_X79
博客等级 码龄15年 4粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值