Различия между SipApplicationSession и servletContext
Я изучаю Sip Servlet, и есть кое-что, что мне не понятно.
С таким сервером приложений, как mobicents, у меня может быть два типа сессии:
SipSession
: связан ли сеанс с запросом / ответом;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 или веб-запросов, поэтому вам нужно только размещать там атрибуты, которые должны существовать дольше этого, и которые вы не хотите сохранять или хранить в базе данных.