Получение нулевого значения сеанса в приложении GWT в веб-режиме, но не в размещенном режиме

#spring #gwt #tomcat6 #session-state

#spring #gwt #tomcat6 #состояние сеанса

Вопрос:

Я запускаю приложение GWT, которое поддерживает пользовательский кеш в объекте сеанса. Я использую Spring Security 3.0.5.

Ниже приведен код, который я использую для получения объекта сеанса

 ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession session = attr.getRequest().getSession(false);
if(session != null)
     return session;
else
     throw new IllegalStateException("Session Expired");
  

В размещенном режиме, т. е. на сервере jetty, все работает нормально, и я могу получить объект сеанса, но в веб-режиме, т. е. tomcat 6, объект сеанса возвращается нулевым

Я использую следующие записи в web.xml требуется для запуска приведенного выше кода

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>
<listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </listener-class>
</listener>
  

Обновить

Ниже приведены настройки безопасности spring, которые я использую

 <http>
    <intercept-url pattern="/**Phoenix.html*" access="ROLE_ADMIN"/>
    <form-login authentication-failure-url="/login.html" default-target-url="/Phoenix.html?gwt.codesvr=127.0.0.1:9997" always-use-default-target="true"/>
    <remember-me/>
    <logout />
    <access-denied-handler error-page="/login.html"/>
    <session-management><concurrency-control/></session-management>
</http>
  

Обновить

Это происходит потому, что в веб-режиме после входа SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString() возвращается «AnonymousUser», в то время как в размещенном режиме то же выражение возвращает учетные данные для входа пользователя, вошедшего в систему. Ниже приведены URL-адреса, которые я использую в размещенном режиме:http://127.0.0.1:8888/Phoenix.html?gwt.codesvr=127.0.0.1:9997

веб-режим:http://localhost:8185/PhoenixMCDemo/Phoenix.html;jsessionid=E56C80258410D102E6B51EFEE5AA0E91

Комментарии:

1. точно такая же проблема

Ответ №1:

Комментарии:

1. Я не работаю в режиме app Engine и в любом случае смог войти в систему, чтобы изначально создать объект сеанса. Проблема заключалась в том, что запросы rpc не были идентифицированы из-за отсутствия идентификатора сеанса в его URL. Я решил это, используя файлы cookie для управления сеансом. Для получения более подробной информации обратитесь: technical-ramblings.blogspot.com/2011/05 /…