在我的 JSF 2.0 应用程序中,我有一个会话处理用户 bean,我使用以下代码将 Siteminder 请求标头值设置为会话变量:
FacesContext context = FacesContext.getCurrentInstance();
Map<String, String> requestHeaderMap = context.getExternalContext().getRequestHeaderMap();
context.getExternalContext().getSessionMap().put(GlobalConstants.SITEMINDER_USERID, userId);
context.getExternalContext().getSessionMap().put(GlobalConstants.SITEMINDER_USERGROUPS, groups);
context.getExternalContext().getSessionMap().put(GlobalConstants.SITEMINDER_USERNAME, userName);
从 doFilter 方法下的过滤器中,我正在使用读取会话变量
HttpSession ses = req.getSession();
但 ses 返回 NULL 并且我的过滤器未授权。谁能告诉我这里发生了什么?这并不总是发生,每 10 个用户中就有 1 个发生这种情况。另一个信息是应用程序位于具有 2 个用于负载平衡的托管实例的 weblogic 服务器上。所以我不确定当第一个请求到达一个实例而第二个请求到达另一个实例时会话是否重置为 null