• nginx+tomcat反向代理下使用tomcat-redis-session-manager进行session共享中值得注意的一个问题


    公司目前项目使用nginx反向代理+多个tomcat进行负载均衡,之前使用ip_hash策略进行session控制。近期有考虑不再使用ip_hash策略,所以需要进行session共享。

    根据项目实际情况,拟考虑使用开发配置比较简单,应用比较广泛的tomcat-redis-session-manager方式进行session共享,具体设置请参考 http://www.cnblogs.com/interdrp/p/4056525.html

    公司原来项目使用spring security框架进行安全控制,在测试的时候发现一个诡异的问题,在前端登录的时候,自定义的session已经共享成功,但是登录提交后总是跳转到j_spring_security_check,security的content为空,security并没有创建和保存登录后的session。

    发现一个问题,当自定义的session创建后,tomcat会调用tomcat-redis-session-manager将其序列化然后保存到redis上去,当使用request.getSession().setAttribute(key,value);设值的时候,如果value为null,空对象,则会造成异常,且此异常并不在项目代码中创建,难以追踪到。

    所以一旦使用tomcat-redis-session-manager方式进行session共享,项目代码中在使用request.getSession().setAttribute(key,value)的时候,最好需要判断一下value是否为空对象。

  • 相关阅读:
    揭秘淘宝286亿海量图片存储与处理架构
    从能做的事做起,做越来越多的事
    用表驱动代替switchcase
    文件过滤驱动中的重入处理
    谈谈对APC的一点理解
    StartIo例程的作用
    C++各大名库的介绍
    IRQL
    FastIO
    一道面试题,看这段代码最后抛出什么异常
  • 原文地址:https://www.cnblogs.com/qingzhou/p/4287502.html
Copyright © 2020-2023  润新知