从httpServletrequest和DWR httpServletrequest获取不同的会话

时间:2017-07-24 10:05:50

标签: java servlets dwr

我正在开发一个遗留应用程序,

当用户登录请求时,过滤器将在验证后重定向到主页。之后,只要用户点击任何链接,就会验证用户是否是使用DWR的管理员用户。

问题是,当我们从

获取会话时,我们会收到不同的会话
httpServletrequest.getSession(true);

WebContextFactory.get().getHttpServletRequest().getSession();

因此,当我们尝试从会话中获取用户详细信息时,我们在会话中得到的是从DWR获得的内容。

如何使用DWR获取在httpServletrequest中创建的同一会话。

1 个答案:

答案 0 :(得分:0)

根据this page

  

当您在DWR线程中时使用WebContext。它使用ThreadLocal变量将您连接到正在运行的容器。

当您调用WebContextFactory.get()时,您是否处于DWR线程中?

或者,您可以在您的远程方法对象的参数列表中包含servlet对象。

  

DWR不会将其包含在生成的存根中,并且在调用该方法时,它将自动填充它。

我是这样做的并且有效。我得到了与标准请求相同的会话。

public class Remote {
    public void method(int param, HttpSession httpSession) { ... }
}