【发布时间】:2018-03-07 20:01:31
【问题描述】:
我想知道 httpsession 中的 __flexSession 属性是什么。在应用程序前端工作是 flex,wildfly10 是应用程序服务器,后端是 java。 HttpSession 有一个名为 __flexSession 的属性,它具有 HttpFlexSession 对象。这似乎是 HttpSession 的克隆。每当我使 HttpFlexSession 无效时,HttpSession 失效后,我得到了这个异常。 java.lang.IllegalStateException: WFLYCLWEBUT0001: 会话 KvLvpquLBKMYJ_APyZ6jzxhenh3cRIjoZtHkdAf3 在 org.wildfly.clustering.web.undertow.session.DistributableSession.validate(DistributableSession.java:55) 无效 在 org.wildfly.clustering.web.undertow.session.DistributableSession.getAttribute(DistributableSession.java:142) 在 io.undertow.servlet.spec.HttpSessionImpl.getAttribute(HttpSessionImpl.java:122) 在 com.os.sp.web.servlet.SessionInvalidateServlet.doPost(SessionInvalidateServlet.java:58) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
【问题讨论】:
-
HttpSession session = request.getSession(false);
-
HttpSession session = request.getSession(false); HttpFlexSession flexSession = (HttpFlexSession)session.getAttribute("__flexSession"); session.invalidate(); flexSession.invalidate();
-
我会说一个你应该不接触的内部属性。怎么还想让它失效,HTTP会话还不够吗?
-
好吧它是内部的。它也是HttpFlexSession的一个会话类型。如果我不让它失效,这个会话就会失效。
-
此问题已解决“__flexSession”是自动创建的属性,它包含一个会话,该会话是主会话(父会话)的副本。如果您使会话无效,它将自动使会话包含“__flexSession”属性。如果您将通过“__flexSession”属性使包含的会话无效,它也会使其父级无效。这只是一个理论,但问题是如何确保两个会话都无效。因此,要克服这个疑问,解决方案首先是将两个会话相互隔离,而不是一个一个地失效
标签: java servlets apache-flex wildfly httpsession