该项目使用JSF2.1和primefaces4在带有负载平衡环境的WAS7上运行。验证过滤后,userinfo将其置于会话中。在查看页面时,后端bean使用facescontext从会话中获取用户信息,如下所示,bean范围是viewscoped
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context
.getExternalContext().getRequest();
HttpSession session = request.getSession(false);
UserInfo userInfo= null;
if(session != null) {
userInfo= (UserProfile) session
.getAttribute("UserInfo");
// do some logic
}
按预期工作正常。当更多号码用户(同时)访问页面或同时在页面中进行相同的操作时,有时会话给出错误的对象,即其他用户信息对象不是我的。根据用户信息,所有业务逻辑都将被执行,因此页面显示错误的信息。
知道为什么会发生这种情况,以及防止这种情况发生的解决方案吗?