session中保存了一个的id值,许多业务逻辑要根据这个id值来处理,所以许多页面要从session里获取这个值,但是令人纠结的是有时候总是取不到,没有session.remove ,session也米有过期。后来加了个session的监听器发现有时候自己就把这个值给清除了.
中间件不会有这样的问题。
一般两种可能性:
1、无意中对session该属性set了null;
2、JSessionID发生了变化,多半出在集群环境下;
你是用的:HttpSessionAttributeListener 来做属性监听么?
那么在清除的事件中,你这么做:
Throwable stack = new Throwable();
stack.printStackTrace();
在打印出来的堆栈信息,看看究竟是哪个类的那句话,把属性给remove 或者 set了null。