![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Есть примерно такой класс:
В общем иннициализируется соединение, читаются некоторые данные оттуда, и затем этот класс сохраняется в пользовательской сессии (что соединение заново не открывать), тогда же обработка таймера срабатывает оказыватся что переменная clarify равна null. При этом её никто в null не устанавливал, метод disconnect не вызывали, и открытое соединение висит в воздухе (по netstat -a отображается) , в чём может быть причина?[s] Это сообщение отредактировал(а) 3,14 - 10.12.2004, 17:30 -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
А что если у тебя он по тайм-ауту закрывается ? Там же есть SO_TIMEOUT - может по нему и вываливается.
|
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 2 Всего: 21 |
Возможно, run() при срабатывании таймера выполняется в ИНОМ, нежели сохраненном у пользователя ЭКЗЕМПЛЯРЕ Connector и просто его "не видит".
Попробуй clarify объявить как static. Правда, тогда всем пользователям придется пользоваться одним сокетом. -------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 1 Всего: 172 |
Тak этo ж сервер.
Если объект цепляется к сессии, то какая разница, статик он или нет? Может дело в таймауте, но тогда сессия былa бы null. Запости код где ты с сессией и этим объектом работаешь. -------------------- |
||||
|
|||||
| igon |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 2 Всего: 21 |
Да, нужен
Если там вместо
указано, скажем,
-------------------- Хотите поговорить об этом? |
||||||
|
|||||||
| 3,14 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
пробовал менять, не помогает
-------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
||||||||
|
|||||||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 2 Всего: 21 |
1. Хотя класс называется Connector, конструктор у него ClarifyConnector
clarify = new ClarifyConnector(user, pass); Очепятка? 2. Используются clarify типа ClarifyConnector и clarify типа Socket - несколько сбивает с толку 3. А где Timer, который срабатывает и не обнаруживает clarify? Должно быть примерно так
Ну и, наверное, надо сохранять в сессии информацию о таймере, чтобы его пересоздавать при пересоздании clarify -------------------- Хотите поговорить об этом? |
|||
|
||||
| 3,14 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Она самая
Сам таймер член класса ClarifyConnector, а инициализируется в методе connect этого же класса
Добавлено @ 16:18
Таймер сохраняется в сессии вместе с clarify, так как это член этого класса -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
||||||||
|
|||||||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 2 Всего: 21 |
Sorry, запостил - а потом и сам увидел. Но возникли проблемы со связью и не успел отозвать
ТОлько все равно несколько странно - таймер запускается из задания, которое запускается по этому таймеру. Надо подумать -------------------- Хотите поговорить об этом? |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
По этому таймеру запускается совершенно другое задание, проверка на то жива ли связь, а не попытка соединения, просто эти функции члены одного класса -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 1 Всего: 172 |
У тебя максимальный период без активности = 3 минуты, а update_connection_time вызывается только в конструкторе. Может ты сам делаешь дисконнект после трех проходов run() (период ведь 1 секунда)?
Заодно лучхе заменить нетоды getValue/setValue нa getAttribute/setAttribute. -------------------- |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 2 Всего: 21 |
my_scheduler.scheduleAtFixedRate(this, 1000, period);
Когда стоит 0 - сразу запускается run() и, т.к. Socket еще не инициализирован, таймер отключается насовсем, отработав только один раз -------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 1 Всего: 172 |
Короче, сам себя убивает
-------------------- |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Так оно и было, спасибо огромное всем откликнувшимся -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |