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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выполнение действий перед разрушением сесии 
:(
    Опции темы
integral
Дата 29.4.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



Добрый день,
необходимо получить из сесии атрибут (строка) и выполнить с его помощью некоторые действия. В HttpSessionListener метод sessionDestroyed вызывается после разрушения сесии и атрибут не молучается извлечь. Придумалось решение, ложить в сесию не строку, а объект класса реализовывающего HttpSessionBindingListener - но такой способ не очень нравится, т.к. требует рефакторинга все кода, где упоминается данный атрибут. Может есть более простые решения?
спасибо)


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
AntonSaburov
Дата 29.4.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



наверно надо выделить все обращения к данному аттрибуту в отдельный метод и соответственно сохранение этого аттрибута тоже в отдельный метод.
Ну а дальше дело техники - хоть в базу данных сохраняй, хоть в файл. И вытаскивай тоже.
PM MAIL WWW ICQ   Вверх
ivg
Дата 29.4.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Цитата(integral @  29.4.2009,  13:43 Найти цитируемый пост)
В HttpSessionListener метод sessionDestroyed вызывается после разрушения сесии и атрибут не молучается извлечь.

Интересно при каких условиях это происходит, потому что вроде как получается извлечь. Tomcat 6.0.18, Servlet 2.5
PM MAIL   Вверх
integral
Дата 29.4.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



логичноsmile но хотелось бы узнать, обезательно ли для того, что бы получить возможность выполнять действия перед операцией разрушения сесии нужно, что бы сохраняемый в сесию объект реализовывал HttpSessionBindingListener?

Добавлено @ 12:50
Цитата(ivg @  29.4.2009,  12:44 Найти цитируемый пост)
Интересно при каких условиях это происходит, потому что вроде как получается извлечь. Tomcat 6.0.18, Servlet 2.5 

точно? вобще как-бы Note that HttpSessionListener.sessionDestroyed is invoked _after_ a
session is invalidated.
 
 у меня томкет 6 и падает IllegalAccessError  ошибся IllegalStateException, а вот на томкете 5 работает - там баг такой был, что сесия не разрушалась (№3735)

Это сообщение отредактировал(а) integral - 29.4.2009, 12:52


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
ivg
Дата 29.4.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Цитата(integral @  29.4.2009,  14:46 Найти цитируемый пост)
Note that HttpSessionListener.sessionDestroyed is invoked _after_ a
session is invalidated
Можно ссылку?
И пример кода, я у себя проверю.
Вообще странно, надо бы разобраться...

PM MAIL   Вверх
integral
Дата 29.4.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



Цитата(ivg @  29.4.2009,  13:00 Найти цитируемый пост)
Можно ссылку?

http://www.velocityreviews.com/forums/t125...ons-please.html
http://java.sun.com/j2ee/sdk_1.3/techdocs/...tpSessionEvent)
http://www.xyzws.com/Servletfaq/when-do-i-...ssionlistener/7

Да пример кода любой сойдет, вот кусочек:
Код

public class SessionProcessor implements HttpSessionListener {

        private static int activeSessions = 0;

        public void sessionCreated(HttpSessionEvent se) {
                activeSessions++;
        }

        public void sessionDestroyed(HttpSessionEvent e) {
          HttpSession session = e.getSession();
          TSUDobj app=(TSUD)session.getAttribute("knownTSUD");  // got IllegalStateException
        }
}



--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
integral
Дата 29.4.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



проблема усугудилась тем, что как показал тест sessionDestroyed вызывается перед valueUnbound
поэтому, как все таки выполнить действия перед тем, как сесия станет инвалидной??


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
ivg
Дата 29.4.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Цитата(integral @  29.4.2009,  15:14 Найти цитируемый пост)
http://www.velocityreviews.com/forums/t125...ons-please.html

Там пост 2003 года  smile
Стэк-трэйс этого исключения покажите.
Должно всё работать вроде. invalidate() ни в каких листенерах не вызывается случайно?
PM MAIL   Вверх
integral
Дата 29.4.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



ну 2003 но с того времени, я полагаю, принцып работы не должен был изменится):
стек-трейс:
Код

java.lang.IllegalStateException: getAttribute: Session already invalidated
    at org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:982)
    at org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:166)
    at com....// обфускатором идет SessionProcessor#sessionDestroyed



--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
ivg
Дата 29.4.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Цитата(integral @  29.4.2009,  16:56 Найти цитируемый пост)
стек-трейс:

Эти строки то как раз не интересны; что ниже?
Цитата(integral @  29.4.2009,  16:56 Найти цитируемый пост)
ну 2003 но с того времени, я полагаю, принцып работы не должен был изменится):

Не факт, тем более это не официальная информация. Судя по исходнику org.apache.catalina.session.StandardSession в момент вызова sessionDestroyed() сессия должна быть валидной.

Добавлено через 2 минуты и 19 секунд
Какая версия томката кстати?
PM MAIL   Вверх
integral
Дата 29.4.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



на этом воспроизводится:
Server Information
Tomcat Version    JVM Version    JVM Vendor    OS Name    OS Version    OS Architecture
Apache Tomcat/5.0.9    1.6.0_11-b03    Sun Microsystems Inc.    Windows XP    5.1    x86


а дальше идет вот такое:
       
Код

        at org.apache.catalina.session.StandardSession.expire(StandardSession.java:683)
    at org.apache.catalina.session.StandardSession.expire(StandardSession.java:641)
    at org.apache.catalina.session.StandardManager.processExpires(StandardManager.java:819)
    at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:4363)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1660)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1669)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1669)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1649)
    at java.lang.Thread.run(Thread.java:619)


Это сообщение отредактировал(а) integral - 29.4.2009, 15:35


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
ivg
Дата 29.4.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Цитата(integral @  29.4.2009,  14:46 Найти цитируемый пост)
у меня томкет 6

Цитата(integral @  29.4.2009,  17:18 Найти цитируемый пост)
Apache Tomcat/5.0.9 

Ы? smile
Короче надо обновлять версию томката.
PM MAIL   Вверх
integral
Дата 29.4.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

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



Цитата(ivg @  29.4.2009,  15:42 Найти цитируемый пост)
Ы? 

на 5,0,9 проявляется, на 6,0,18 - нету = в том предложении ошибка была


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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