空以我JSF 2.0應用,我有一個會話應對用戶豆我在哪裏使用下面的代碼設定的SiteMinder請求標頭值到會話變量:下JSF 2.0會話返回有時
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服務器上以進行負載平衡。所以我不確定當第一個請求聚合到一個實例並且第二個請求到達另一個實例時會話重置爲空
getSession()方法可能返回一個有效的會話(如果存在),或者如果沒有與HttpServletRequest關聯的有效HttpSession,則返回null。如果你得到一個null,這意味着它是一個新的請求或前一個會話已過期等。 – Yamada