V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzfer
V2EX  ›  程序员

jar 包编码问题,会导致 Security 的 ThreadLocal 出现问题吗?

  •  
  •   zzfer · 69 天前 · 759 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在使用 gitlab 的 CI/CD 功能时,部署成功后发现登录不上了。

    经过排查,发现登录后获取用户时:SecurityContextHolder.getContext().getAuthentication()为空。在网上多方查询,这里用户为空的原因基本上是 ThreadLocal 限制的原因

    发现线上的 jar 包一直不行。但是下载到本地,解压后重新打成 jar 包就行。具体命令如下

    解压:jar -xvf xx.jar

    重新压缩:jar -cfM0 xx.jar ./

    然后再线上服务器上,进行同样的解压压缩,也还是不行。

    解压对比 jar 包全部内容,个别配置文件不一样,替换成一样的也不行。我感觉唯一可能的就是编码问题。想问问各位彦祖 有遇到过类似的问题吗?或者知道一些这方面的情况

    7 条回复    2021-11-16 15:06:05 +08:00
    AoEiuV020
        1
    AoEiuV020  
       69 天前
    你这折腾几天了,
    我只能猜 jdk 版本问题了,确保 jdk, jre, javac, java ,确保 openjdk/oraclejdk 要一样,大版本号一样,小版本号一样,
    chendy
        2
    chendy  
       69 天前
    你也说了是配置文件不一样,所以是什么配置文件怎么个不一样,对登录流程有没有影响?
    aguesuka
        3
    aguesuka  
       69 天前
    控制变量法. 三个帖子看下来我都不清楚 ic 打的包本地能不能运行. 如果不能运行, 给登录打个端点, 一路跟踪到 ThreadLocal 不就完了.

    我也怀疑是编码问题, 不过是把异常 catch 住没日志的那种.
    aguesuka
        4
    aguesuka  
       69 天前
    @aguesuka "运行" 应该是 "复现"
    zzfer
        5
    zzfer  
    OP
       69 天前
    @AoEiuV020 感谢回复,目前 jdk 版本一致了

    @chendy 感谢回复。配置文件不影响,替换成一样的了也不行

    @aguesuka 感谢回复。包都可以跑起来。就是调用 auth 的时候获取不到当前用户登录的信息。包可以跑,但包不能打断点,本地可以打断点,但可以正常获取到用户信息
    aguesuka
        6
    aguesuka  
       69 天前
    服务器上打的 jar, 在本地用命令跑起来可以复现这个问题吗? 如果不能复现, 就是环境的问题, 如果能复现, 用 IDEA 给 jar 包打断点.
    Buges
        7
    Buges  
       68 天前 via Android
    如果怀疑 threadlocal 有问题,可以 gdb 进去看一下。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4177 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:54 · PVG 13:54 · LAX 21:54 · JFK 00:54
    ♥ Do have faith in what you're doing.