Различия между SipApplicationSession и servletContext

Я изучаю Sip Servlet, и есть кое-что, что мне не понятно.

С таким сервером приложений, как mobicents, у меня может быть два типа сессии:

  1. SipSession: связан ли сеанс с запросом / ответом;
  2. SipApplicationSession: это сеанс, который обернуть SipSession и (в конце концов) HttpSession, Это следует использовать для связи между сетью и sip-сервлетом.

Почему у нас должен быть второй? Если я позвоню:

getServletContext.setAttribute("something", somethingObject);

это разделяется с двумя сервлетами, или я не прав?

ServletContext это то, что оборачивает сервлет в приложении, и поэтому мы можем общаться через сервлеты.

Так почему мы должны использовать SipApplicationSession?

Спасибо за ответы.

1 ответ

Решение

Вы правы в отношении концепции SIPSession и SIPApplicationSession.

Думайте о SIPApplicationSession как о мета-сессии, поддерживающей N SIP-сессию (и HTTPSession, если приложение представляет собой конвергентную SIP-и HTTP-сессию и использует их). Таким образом, атрибуты в этом могут быть общими для всех SIP-сессий, если вы создаете B2BUA (и также WebSession, если вы включаете Web в свое приложение), но всегда ограничены во времени контекстом SIP-сессии и HTTP-сессии.

ServletContext, тем не менее, предназначен для жизненного цикла приложения и полностью независим от вызовов SIP или веб-запросов, поэтому вам нужно только размещать там атрибуты, которые должны существовать дольше этого, и которые вы не хотите сохранять или хранить в базе данных.

Другие вопросы по тегам