我有一个具有阶段监听器的Web应用程序。当阶段监听器运行时,它会对会话映射执行一些操作。随机(通常不是第一个请求,但更快地发出请求时)我从SessionMap.put获得一个空指针异常。在进行了一些挖掘之后,似乎当SessionMap.put正在获取会话时,它返回一个空指针(即使它调用了getSession(true))。所以我做了一些调试,发现确实getSession和getRequestedSessionId在调用时都返回null。但是,如果您检查请求中的cookie(request.getCookies()),则JSESSIONID cookie将包含在请求中并具有正确的会话。似乎没有押韵或理由为什么会话和请求的会话ID有时会恢复正常,有时会返回null。这里唯一可能相关的另一条信息是JSF页面生活在一些旧的JSP / Servlet所在的同一个应用程序中。
我在网上看了看,其他人说已经设置了“/”的cookie路径已经为他们解决了类似的问题,但它似乎没有解决这个问题。