powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Обнудение полей обьекта ищо до удаления
9 сообщений из 9, страница 1 из 1
Обнудение полей обьекта ищо до удаления
    #37888821
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая штука:

Какой-то JSF-проект, в нем бин, который отвечает за вход пользователей в систему:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@Named("loginBean")
@SessionScoped
public class LoginBean implements Serializable {

  private String login = "";
  private Boolean logined = false;

  public void userInside(){
    // проверzем ести ли .зер в БД, если есть то:
    login = "fender";
    logined = true;
    UserInfo.addUserList(login); // Додаем пользователя к списку пользователей, которые есть в системе. UserInfo клас который имееет статик метод addUserList, поновляет список

    @PreDestroy  // метод, который срабатывает перед уничтодением обьекта, тоб-то когда кончается сесия
    private void finish() {
       UserInfo.removeUserList(login); // удаление юзера из списка юзеров  
    }

  }
 
}



Так вот, все вроде работает. Но раз в год случается что-то странное, когда срабативает finish() и пытается зделать UserInfo.removeUserList(login), то оказывается что login = null. Тобто поля тебущего обьекта LoginBean обнуляются исчо до его удаления.
Даже не знаю куда копать.

П.С
Извесно что сесия разрушается когда к ней нет запросов, тоб-то закрыли вкладку, через определенное время сесия уничтожилась. А даная штука, которою я описал выше случается тогда, когда пользователь сидит долго на одной странице и нечего не делает и в результате сесия у ничтожается. Потом пользователь жмет обновить страницу, а ему уже пишет, что невозможно запросить страницу. Вот при таком аварийном вылете и происходит зануление полей...
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888833
Фотография dmitriyche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis11111... А даная штука, которою я описал выше случается тогда, когда пользователь сидит долго на одной странице и нечего не делает и в результате сесия у ничтожается...
И это нормальное поведение.
Вижу 2 варианта:
- делать AJAX-запрос каждые N-минут
- увеличить время жизни сессии

It's up to you.
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888847
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmitriychedenis11111... А даная штука, которою я описал выше случается тогда, когда пользователь сидит долго на одной странице и нечего не делает и в результате сесия у ничтожается...
И это нормальное поведение.
Вижу 2 варианта:
- делать AJAX-запрос каждые N-минут
- увеличить время жизни сессии

It's up to you.

Нуда, что я и зделал вставил куда надо запросы. Но как я говорил раз в год все равно вылетает. Тестил, целые выходние сидел на страничке и нет вылетания. потом зашол как-то на минутку и все - вылет.
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888858
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но это вся так, костыли. интересно почему зануляются поля...
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888861
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis11111Но это вся так, костыли. интересно почему зануляются поля...
Мистика. А stacktrace исключения есть?
А так надо чтобы метод finish был внутри другого?
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888920
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczdenis11111Но это вся так, костыли. интересно почему зануляются поля...
Мистика. А stacktrace исключения есть?
А так надо чтобы метод finish был внутри другого?

В логе все время мелькает

"SEVERE: Exception in internal GC
java.lang.NullPointerException
at org.jinterop.dcom.core.JISession$Release_References_TimerTask.run(JISession.java:256)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)"

finish, c ним опечатка. Здесь нет кнопки "изменить"(

При более длительном тесте обнаружыл что finish при "аварийном вылете" может вобще не сработать - мистика. Мда, я не понимаю каких-то хитрых основ.

Зделал
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class SessionClass implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("------------------------------sessionCreated------------------------------");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {

            UserInfo.removeUserList(se.getSession().getAttribute("name").toString());
            System.out.println("-------------sessionDestroyed--------------------------");


    }
}



Теперь гарантировано удаляет юзера.

Но не ясно з @PreDestroy - сказано срабатывает перед уничтожением обьекта. а то выходит что обьекта не и он не сработал.
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888931
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis11111"SEVERE: Exception in internal GC
java.lang.NullPointerException
at org.jinterop.dcom.core.JISession$Release_References_TimerTask.run(JISession.java:256)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)"

Как это связано с вашим кодом вообще? как вы определили что login - null ?
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888952
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczdenis11111"SEVERE: Exception in internal GC
java.lang.NullPointerException
at org.jinterop.dcom.core.JISession$Release_References_TimerTask.run(JISession.java:256)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)"

Как это связано с вашим кодом вообще? как вы определили что login - null ?

Незнаю с моим это связано кодом или нет...

login - null в дебагере посмотрел.
...
Рейтинг: 0 / 0
Обнудение полей обьекта ищо до удаления
    #37888956
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis11111login - null в дебагере посмотрел.
Можно дамп стека выложить, в тот момент когда login - null
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Обнудение полей обьекта ищо до удаления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]