java多租户系统中使用线程池出现Request请求为空的情况

我当前项目是一个多租户的项目,今天测试某个功能时发现有问题,这个功能是提供一个期末成绩模板,为学生生成一个期末成绩word文档并转换为pdf格式,为了追求省时,我采用了自定义线程池来完成。但是以往测试是在管理员账户默认的租户下测试的,导致一直没发现这个问题,这次换了一个租户进行测试,就出现了在使用多线程之前的sql查询附带的租户id是正确的,但是多线程程序里面的sql查询附带的租户id却是默认的管理员租户id,导致数据一直没查出来,后来我查找了系统代码,发现租户是附带在Request请求中的,当请求中没有时则为默认租户id,找到了原因,我就开始上网查询,发现线程池之间是不共享上下文信息的,所以主线程的Request请求并没有传给线程池,导致线程池取不到租户id。

解决方法如下:

获取请求,然后在线程池执行时在里面设置RequestAttributes达到在线程之间传递上下文请求信息

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值