HttpSession меняет между вызовами сервлет и сервлет GWT RPC (RemoteServiceServlet) - PullRequest
0 голосов
/ 19 августа 2010

У меня есть приложение GWT, которое я хотел бы запустить из макета Joomla. Кажется, что концепция работает нормально, и приложение загружается правильно. Joomla использует iFrame для достижения этого и просто отправляет URL, который запускает приложение GWT.

Проблема, с которой я сталкиваюсь, заключается в том, что мне требуется определенная информация от Joomla, которую я передаю в качестве параметров в URL. Поскольку приложение GWT запускается со страницы HTML, и у меня нет возможности получить доступ к этим параметрам, я вместо этого запускаю запрос к сервлету, идея состоит в том, что я могу получить эти параметры, сохранить их в сеансе и затем обслуживать HTML-страница приложений GWT.

Концепция работает отлично. Я беру параметры, помещаю их в карту, эта карта входит в базовый компонент и сохраняю компонент как атрибут сеанса с кодом:

request.getSession().setAttribute("sessionBean", sessionBean);

Затем сервлет выдает HTML-страницу GWT, которая, в свою очередь, загружает приложение, и первое, что он делает, это запускает вызов RPC. Проблема, с которой я сталкиваюсь, заключается в том, что мой RemoteServiceServlet обрабатывает этот вызов, я пытаюсь получить SessionBean с помощью следующего кода:

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

Я получаю ноль, и, присмотревшись, осознаю, что он фактически создал новую сессию. Я знаю это, сравнивая идентификаторы двух сессий. Все последующие последующие вызовы RPC имеют доступ к последнему сеансу, но тот, в котором я сохранил мой SessionBean, пропал!

Это все один развернутый файл войны, куки включены, и он действует таким образом и в режиме разработки, и в режиме производства.

Я полагаю, что, возможно, неправильно понимаю, как обрабатываются сессии! Есть идеи, почему вызов GWT RPC создает новую сессию? Или, может быть, если я полностью ошибаюсь, как получить эти необходимые параметры в сеансе?

Любая помощь или идеи будут с благодарностью!

Заранее спасибо!

Xandel

1 Ответ

1 голос
/ 19 августа 2010

В gwt вы можете получить url-параметры:

Window.Location.getQueryString()
...