Java 会话在firefox专用窗口上无效

Java 会话在firefox专用窗口上无效,java,session,firefox,gwt,web-applications,Java,Session,Firefox,Gwt,Web Applications,我正在测试环境中测试一个web应用程序,当我试图从firefox上的私有窗口打开它时,返回一个空白页面,日志显示: java.lang.IllegalStateException: Session was invalidated 16/02/02 14:45:17 at com.evermind.server.http.EvermindHttpSession.getId(EvermindHttpSession.java:467) 16/02/02 14:45:17 at cm.liste

我正在测试环境中测试一个web应用程序,当我试图从firefox上的私有窗口打开它时,返回一个空白页面,日志显示:

java.lang.IllegalStateException: Session was invalidated
16/02/02 14:45:17   at com.evermind.server.http.EvermindHttpSession.getId(EvermindHttpSession.java:467)
16/02/02 14:45:17   at cm.listener.SessionListener.sessionCreated(SessionListener.java:14)
16/02/02 14:45:17   at com.evermind.server.http.HttpApplication.createSession(HttpApplication.java:1971)
16/02/02 14:45:17   at com.evermind.server.http.EvermindHttpServletRequest.unprivileged_getSession(EvermindHttpServletRequest.java:2772)
16/02/02 14:45:17   at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest.java:2661)
16/02/02 14:45:17   at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest.java:2655)
16/02/02 14:45:17   at utilities.AdsServerFilter.doFilter(AdsServerFilter.java:39)
引发异常的行如下所示:

HttpSession session=httpRequest.getSession();
应用程序的生产版本在专用窗口上运行良好

据我所知,private window只提供一个新的私有会话,如果找不到现有会话,httpRequest.getSession()还会返回一个新会话。。。有什么帮助吗


我使用的是firefox 26(我无法更新它以使其继续支持GWT扩展)

这与GWT无关,但这是servlet会话工作方式的一部分。如果您尝试使会话无效,那么在同一请求中返回使用它

从javadoc for HttpSession(可在其他地方找到)中,
invalidate()
方法几乎破坏了会话中调用的任何其他方法,包括它本身:

使无效

公共无效

使该会话无效,然后解除绑定到该会话的所有对象

抛出: java.lang.IllegalStateException-如果在已失效的会话上调用此方法

您可以从堆栈跟踪中看到,由于尝试创建会话,OC4J服务器内部正在对会话调用
getId()
。此方法也有相同的例外情况:

盖蒂

public java.lang.String getId()

返回包含分配给此会话的唯一标识符的字符串。标识符由servlet容器分配,并依赖于实现

返回: 指定分配给此会话的标识符的字符串

抛出: java.lang.IllegalStateException-如果在无效会话上调用此方法

现在的问题是“为什么您的会话已经无效?”-您是否也在同一请求中的代码中的其他点调用invalidate?或者OC4J中是否存在无法为私有浏览器创建新会话的错误