文档章节

异步线程RequestContextHolder.getRequestAttributes()为null

xiaomin0322
 xiaomin0322
发布于 05/21 18:35
字数 244
阅读 14
收藏 1

使用Spring框架,在Service中开启一个新的线程,在新的线程中使用
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
获取出来为null,有没有什么办法能解决?

问题出现的环境背景及自己尝试过哪些方法

Service中为优化响应时间,使用了多线程,部分线程中使用到了RequestContextHolder类,结果返回值为空。

相关代码

RequestAttributes ra = RequestContextHolder.getRequestAttributes();
ServletRequesRequestContextHolder.getRequestAttributes()tAttributes sra = (ServletRequestAttributes) ra;
HttpServletRequest request = sra.getRequest();
System.out.println(request.getContextPath());

你期待的结果是什么?实际看到的错误信息又是什么?

期待:System.out.println(request.getContextPath());正常打印出路径,
实际:RequestAttributes ra = RequestContextHolder.getRequestAttributes();

 

开启新线程之前,添加代码:
//将RequestAttributes对象设置为子线程共享
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);

本文转载自:https://blog.csdn.net/cnq2328/article/details/84796071

xiaomin0322
粉丝 140
博文 3773
码字总数 192875
作品 0
上海
架构师
私信 提问
注入或获取spring上下文的几种方式

方式一:通过ApplicationContextAware 注入 注意:一定要给类SpringContext 增加注解@org.springframework.context.annotation.Configuration or @ Service 方式二:通过WebApplicationContext......

黄威
2018/11/30
0
0
springcloud2 feign RequestContextHolder.getRequestAttributes()获取为null

@Configuration public class FeignConfig implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { requestTemplate.header("token", getHeaders......

jspzhao
2018/08/29
532
2
通过RequestContextHolder直接获取HttpServletRequest对象

问题 朋友遇到一个问题:他想在Service方法中使用的API,但是又不想把对象当作这个Service方法的参数传过来,原因是这个方法被N多Controller调用,加一个参数就得改一堆代码。一句话:就是他...

胡桃同学
2016/12/07
54
0
异步IO、APC、IO完成端口、线程池与高性能服务器 (三)

异步IO、APC、IO完成端口、线程池与高性能服务器 (三)  作者 Fang(fangguicheng@21cn.com)

啊莱
2006/01/22
0
0
spring切面编程中,如何获取request和response

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();//获取request HttpServletResponse response = ((ServletRequest......

重城重楼
2018/11/21
0
1

没有更多内容

加载失败,请刷新页面

加载更多

未来,哪些技术在前端开发的地位会越来越高?

转眼2019也快走到下半年,过去的这段时间里,不论是互联网巨头还是初创企业,都纷纷进行了一波优化。渐趋理智的资本淘汰了一批不能适应市场的业务,而业务的紧缩也淘汰了一批不能适应市场的程...

智云编程
22分钟前
0
0
Golang math基本数学函数

三角函数 正弦函数,反正弦函数,双曲正弦,反双曲正弦 func Sin(x float64) float64 func Asin(x float64) float64 func Sinh(x float64) float64 func Asinh(x float64) float64 一次性返回......

Sunki
25分钟前
0
0
SpringBoot系列教程JPA之新增记录使用姿势

SpringBoot系列教程JPA之新增记录使用姿势 上一篇文章介绍了如何快速的搭建一个JPA的项目环境,并给出了一个简单的演示demo,接下来我们开始业务教程,也就是我们常说的CURD,接下来进入第一...

小灰灰Blog
今天
4
0
大话文本检测经典模型:Pixel-Anchor

文本检测是深度学习中一项非常重要的应用,在前面的文章中已经介绍过了很多文本检测的方法,包括CTPN(详见文章:大话文本检测经典模型CTPN)、SegLink(详见文章:大话文本检测经典模型Seg...

雪饼
今天
2
0
手把手教你写一个RPC

1.1 RPC 是什么 定义:RPC(Remote Procedure Call Protocol)——远程过程调用协议 ,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC...

我最喜欢三大框架
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部