Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема HttpSession в glassfish 
:(
    Опции темы
temonix
Дата 20.7.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



Мы используем HttpSession для авторизации и аутификации клиентов. Все достаточно хорошо работает. Но в последнее время начала появляться ошибка. Если несколько клиентов работает за натом ( под одним ip ), то в случае, когда идут параллельно 2 запроса, HttpSession выдает данные не соответствующие пользователю. Конкретный пример:

Код

Person person = (Person) getSessionParam( request, "person");
person = personBean.refresh(person);

где person - POJO объект ( отсоединенный от JPA контейнера, т.к. выполняется этот код в сервлете ),
 getSessionParam - наследованный метод
Код

     protected Object getSessionParam( HttpServletRequest request, String key ) throws ServletException {
        Object param = request.getSession().getAttribute(key);
        if ( param == null ) {
            throw new ServletException("Параметра сессии не существует");
        }
        return param;
    }

Как видно, никаких разделяемых ресурсов здесь нет. 
Код

    public Person refresh(Person person) {
        em.refresh(person);
        return person;
    }

Требуется для обновления информации о персоне, которая меняется от запроса к запросу

Тем не менее метод getSessionParam( request, "person" ) возвращает не своего персона, тогда как GET параметры идут правильные. Это приводит к тому, что транзакция идет не под именем человека, который ее проводит. 

Это проблема glassfish ? Если так, то мы эту проблему решим хранением в cookie id персоны и сравнением при каждом запросе. Это костыль, не хочется делать

Это проблема в нашем коде ? Куда копать?
PM MAIL   Вверх
jokodzuma
Дата 20.7.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.7.2008

Репутация: нет
Всего: нет



1. описанная ситуация происходит когда пользователь уже авторизовался?
2. может, это не в тему, но все же:
http://www.apl.jhu.edu/~hall/java/Servlet-...-Variables.html
http://coding.derkeiler.com/Archive/Perl/c...6/msg01562.html
т.е. что-то вроде request.getHeader("HTTP_X_FORWARDED_FOR")
PM MAIL   Вверх
jokodzuma
Дата 21.7.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.7.2008

Репутация: нет
Всего: нет



Цитата(temonix @ 20.7.2008,  11:52)
Куда копать?

или сюда -> HttpServletResponse.encodeURL(String)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0900 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.