我正在研究Sip Servlet,有些东西我不清楚。
使用像mobicents这样的应用服务器,我可以有两种类型的会话:
SipSession
:是与请求/响应关联的会话; SipApplicationSession
:是包裹SipSession
和(最终)HttpSession
的会话。这应该用于在web和sip servlet之间进行通信。为什么我们要第二个呢?如果我打电话:
getServletContext.setAttribute("something", somethingObject);
这是与两个servlet共享的,还是我错了?
ServletContext
是将servlet包装在应用程序中的东西,因此我们可以跨servlet进行通信。
那么我们为什么要使用SipApplicationSession
?
感谢您的回答。
答案 0 :(得分:1)
您正确认识SIPSession和SIPApplicationSession背后的概念。
将SIPApplicationSession视为支持N SIP会话的元会话(如果应用程序是收敛的SIP和HTTP,则使用HTTPSession并使用它们)。因此,如果您正在构建B2BUA(如果在应用程序中包含Web,则还有WebSession),则可以在SIP会话中共享此属性,但它始终受限于SIP会话和HTTP会话生存期的上下文
但是,ServletContext是针对应用程序的生命周期而完全独立于SIP调用或Web请求的,所以您只想在那里放置那些比这更长寿的属性以及您不想持久存储或存储的属性在数据库中。