Обработка входа на сервер XMPP через сервлеты - PullRequest
2 голосов
/ 07 апреля 2009

Я хотел бы услышать некоторые комментарии о том, как управлять долгоживущими подключениями XMPP в контейнере сервлета, т.е. Tomcat.

По сути, у нас есть клиент, который передает учетные данные для входа в сервлет, и мы создаем XMPPConnection для каждого сеанса и сохраняем его в HttpSession.

Для упрощения клиент может выполнить 4 операции: войти, отправить / получить сообщения, выйти из системы.

(1) Как видите, время жизни XMPPConnection должно обрабатываться (контролироваться) клиент. В нашем случае с HttpSession связан тайм-аут. Ты думаешь опора на HttpSession является ошибкой?

(2) С точки зрения сбора мусора, это проблема, если HttpSession истек и мы специально не вызываем XMPPConnection.disconnect ()? Насколько я понимаю, по истечении времени ожидания все объекты в области действия сеанса обрабатываются GC. Будет ли виртуальная машина отказываться и игнорировать XMPPConnection, если она все еще подключена?

(3) В чем разница между тайм-аутом HttpSession и аннулированием? Насколько я понимаю, тайм-аут относится к конкретному объекту, а недействительность удаляет все.

1 Ответ

0 голосов
/ 08 апреля 2009

(1) Хотя могут быть и лучшие способы, я не обязательно вижу проблему с сохранением учетных данных XMPP в сеансе. Недавно я сделал что-то похожее и использовал HttpSession.

(2) Чтобы решить проблему с тайм-аутом, у вас есть несколько вариантов. Вы можете установить время ожидания сеанса динамически в любом сервлете, который отправляет / получает сообщения (session.setTimeout ()), или вы можете сделать его статическим значением в файле web.xml (значение -1 означает отсутствие времени ожидания). Затем вы можете создать SessionListener и вызвать XMPPConnection.disconnect () для sessionDestroyed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...