HttpSession在调用Servlet和GWT RPC Servlet(RemoteServiceServlet)之间发生变化

时间:2010-08-19 15:01:32

标签: gwt parameters gwt-rpc httpsession

我有一个GWT应用程序,我想在Joomla布局中运行。这个概念似乎工作正常,应用程序正确加载。 Joomla使用iFrame来实现这一点,并发送将启动GWT应用程序的URL。

我遇到的问题是我需要来自Joomla的某些信息,我将其作为参数传递到网址中。由于GWT应用程序从HTML页面启动,无法访问这些参数,我反而向Servlet发出请求,我的想法是我可以获取这些参数,将其保存在会话中然后提供服务GWT应用程序HTML页面。

这个概念很好用。我抓住参数,将它们放入一个映射中,该映射进入一个基本的bean,我将bean存储为一个session属性,代码为:

request.getSession().setAttribute("sessionBean", sessionBean);
然后,Servlet将提供GWT HTML页面,该页面依次加载应用程序,它首先要做的就是触发RPC调用。我遇到的问题是在处理该调用的RemoteServiceServlet中,我尝试使用以下代码获取SessionBean:

SessionBean sessionBean = (SessionBean) this.getThreadLocalRequest().getSession().getAttribute("sessionBean");

我得到null,并且仔细观察它实际上已经创建了一个新的会话。我通过比较两个会话的ID来了解这一点。任何后续的进一步RPC调用都可以访问最后一个会话,但是我存储了SessionBean的那个已经消失了!

这是一个已部署的war文件,已启用Cookie,并且它在开发和生产模式下都以这种方式运行。

我想我可能误解了会话的处理方式!有关为什么GWT RPC调用创建新会话的任何想法?或者,如果我对此完全错误,如何将这些必要的参数放入会话中?

非常感谢任何帮助或想法!

提前致谢!

Xandel

1 个答案:

答案 0 :(得分:1)

在gwt中,您可以通过以下方式获取网址参数:

Window.Location.getQueryString()