Servlets SipApplicationSession和servletContext之间的差异

Servlets SipApplicationSession和servletContext之间的差异,servlets,sip,restcomm,mobicents-sip-servlets,sip-servlet,Servlets,Sip,Restcomm,Mobicents Sip Servlets,Sip Servlet,我正在研究SIPServlet,但有一点我并不清楚 使用像mobicents这样的应用服务器,我可以有两种类型的会话: SipSession:会话是否链接到请求/响应 sipplicationsession:是包装SipSession和(最终)HttpSession的会话。这应该用于web和SIPservlet之间的通信 为什么我们要第二个呢?如果我打电话: getServletContext.setAttribute("something", somethingObject); 这是两个se

我正在研究SIPServlet,但有一点我并不清楚

使用像mobicents这样的应用服务器,我可以有两种类型的会话:

  • SipSession
    :会话是否链接到请求/响应
  • sipplicationsession
    :是包装
    SipSession
    和(最终)
    HttpSession
    的会话。这应该用于web和SIPservlet之间的通信
  • 为什么我们要第二个呢?如果我打电话:

    getServletContext.setAttribute("something", somethingObject);
    
    这是两个servlet共享的,还是我错了

    ServletContext
    是将servlet包装在应用程序中的东西,因此我们可以跨servlet进行通信

    那么,我们为什么要使用
    sipplicationsession


    感谢您的回答。

    您对SIPSession和SIPApplicationSession背后的概念理解正确

    将SIPApplicationSession视为承载N个SIP会话的元会话(如果应用程序是聚合SIP和HTTP会话并使用它们,则为HTTPSession)。因此,如果您正在构建B2BUA(如果您的应用程序中包含Web,则也可以在WebSession),则可以在SIP会话之间共享其中的属性,但其时间总是受限于SIP会话的上下文和HTTP会话生存期


    然而,ServletContext适用于应用程序的生命周期,并且完全独立于SIP调用或Web请求,因此您只希望在其中放置寿命更长且不希望持久化或存储在数据库中的属性

    首先,我很高兴能得到你的帮助。我理解你的答案,就像我想象的那样。因此,在B2BUA的场景中,例如3PCC,当我调用SipFactory.createRequest(SipApplicationSession…)时,有一个web界面(还有HttpServlet),我正在创建一个属于其SipSession的请求,而这个SipSession属于SipApplicationSession。如果出于某种原因,我们按下“挂断”按钮,这将向我们的HttpServlet发出get请求,这将获得对SipApplicationSession的引用,并为每个SipSession(在SipApplicationSession中)创建一个bye请求。谢谢:)你答对了。如果答案有助于指导未来读者,请随意投票。