调用Servlet和GWT RPC Servlet(RemoteServiceServlet)之间的HttpSession更改

调用Servlet和GWT RPC Servlet(RemoteServiceServlet)之间的HttpSession更改,gwt,parameters,gwt-rpc,httpsession,Gwt,Parameters,Gwt Rpc,Httpsession,我有一个GWT应用程序,我想在Joomla布局中运行它。这个概念似乎运行良好,应用程序加载正确。Joomla使用iFrame来实现这一点,只需发送url即可启动GWT应用程序 我遇到的问题是,我需要Joomla提供某些信息,这些信息作为url中的参数传递。由于GWT应用程序从HTML页面启动,使我无法访问这些参数,因此我向Servlet发出请求,其想法是我可以获取这些参数,将其保存在会话中,然后为GWT应用程序HTML页面提供服务 这个概念运作良好。我获取参数,将它们放入一个映射,该映射进入一个

我有一个GWT应用程序,我想在Joomla布局中运行它。这个概念似乎运行良好,应用程序加载正确。Joomla使用iFrame来实现这一点,只需发送url即可启动GWT应用程序

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

这个概念运作良好。我获取参数,将它们放入一个映射,该映射进入一个基本bean,我将bean存储为会话属性,代码如下:

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

SessionBean sessionBean = (SessionBean) this.getThreadLocalRequest().getSession().getAttribute("sessionBean");
我得到空值,仔细观察发现它实际上创建了一个新会话。我通过比较两次会议的id就知道了这一点。任何后续的RPC调用都可以访问上一个会话,但我存储SessionBean的会话已经不存在了

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

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

任何帮助或想法都将不胜感激

提前谢谢


Xandel

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

Window.Location.getQueryString()

哈就这么简单!:)非常感谢你!至于新的会话情况,虽然我现在不需要为它操心,但是你可能知道为什么它不起作用吗?再次感谢!据我所知,您的会话应该没有任何问题,可能是配置错误。Firefox有一个很好的工具来查看名为“WebDeveloper”的cookies,如果您获得了会话cookie,您可以在这里查看cookies。