RAP Workbench顾问中的Servlet会话

时间:2015-10-07 19:35:19

标签: eclipse eclipse-rap

我使用以下代码在servlet会话中添加属性

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException 
{
  req.getSession().setAttribute("USER",userObject);
}

我试图在RAP ApplicationWorkbenchWindowAdvisorpostWindowOpen方法中访问它,如下所示

RWT.getRequest().getSession().getAttribute("USER")
迁移到RAP 3.0版后,

上面的方案无效。在RAP 2.0中它运行良好。

当我调试应用程序时,我可以在HashMap中看到session属性但是无法通过getAttribute函数访问它,请查看下面的图像 enter image description here

2 个答案:

答案 0 :(得分:1)

这可能不是RAP本身的变化,而是Equinox。我想你的servlet现在被认为是另一个“web应用程序”的一部分,因此获得了不同的ServletContext。由于HttpSession的范围限定为ServletContext,因此您最终会得到不同的HttpSession。同时,Equinox在这方面也发生了变化(参见例如this discussion)。

要验证此理论,您可以尝试使用较旧版本的Equinox运行RAP 3.

作为一种变通方法,您可以考虑使用ServiceHandler而不是servlet,或者在RAP应用程序的上下文中以编程方式注册您的servlet。

<强>更新 似乎可以在RAP 3.1中解决此问题,请参阅bug 480326

答案 1 :(得分:0)

我最近为此问题创建了一个Bugzilla问题:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=480326

此致 伊万