2
我使用的是Tomcat 6.0,JSF2.0.2如何随机我的会话为空?
我意识到随机的HttpServletRequest getSession
方法,返回null。
我可以会话随机为空?
如何调试谁将会话设置为空?
我用request.getSession(true)
检查了它,它返回null。它怎么可能无法创建会话?
我使用的是Tomcat 6.0,JSF2.0.2如何随机我的会话为空?
我意识到随机的HttpServletRequest getSession
方法,返回null。
我可以会话随机为空?
如何调试谁将会话设置为空?
我用request.getSession(true)
检查了它,它返回null。它怎么可能无法创建会话?
首先,这个问题与JSF无关,因为它只是一个基于组件的MVC框架。这个问题更多地与servletcontainer有关,在这种情况下就是Tomcat。
至于问题:我以前在特定的门户(类似)应用程序中看到过。 Tomcat具有一些内置网络钓鱼预防功能,当给定的Cookie ID和路径与Tomcat会话管理器中的任何cookie不匹配时,会返回null
会话。此问题通常可以通过将HTTP Connector<Connector>
的emptySessionPath
属性设置为conf/server.xml
至true
来解决。
我试过了 - 但它没有帮助。 我仍然不时得到这个错误信息:( – Dejell 2010-06-21 09:50:06
调试请求头以检查有效的cookie是否存在,如果不是,那么这是一个客户端或代理问题 – BalusC 2010-06-21 14:23:31
我们只需要设置user_id 。两者上的ExternalContext会话和Tomcat请求会话是这样的: 的ExternalContext ECTX = \t \t \t FacesContext.getCurrentInstance()getExternalContext(); \t \t HttpServletRequest的REQ =(HttpServletRequest的)ectx.getRequest(); \t \t HttpSession的会议=( HttpSession)ectx.getSession(false); \t \t ectx.getSession Map()。put(Constants.CURRENT_USER_ID_ATTR,user.getId()); \t \t session.setAttribute(Constants.CURRENT_USER_ID_ATTR,user.getId()); \t \t req.getSession(false).setAttribute(Constants.CURRENT_USER_ID_ATTR,user.getId()); 有趣,哈? – Dejell 2010-07-07 10:18:45