У меня есть приложение 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