SipApplicationSession 和 servletContext 的区别

Differences between SipApplicationSession and servletContext

我正在研究Sip Servlet,有些地方我不太清楚。

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

  1. SipSession: 会话链接到 request/response;
  2. SipApplicationSession:是包装 SipSession 和(最终)HttpSession 的会话。这应该用于 web 和 sip servlet 之间的通信。

为什么我们要有第二个?如果我打电话:

getServletContext.setAttribute("something", somethingObject);

这是否与两个 servlet 共享,还是我错了?

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

那么我们为什么要使用SipApplicationSession

感谢您的回答。

您对 SIPSession 和 SIPApplicationSession 背后的概念是正确的。

将 SIPApplicationSession 视为一个支持 N 个 SIP 会话的元会话(如果应用程序是融合的 SIP 和 HTTP 应用程序并使用它们,则将其视为 HTTPSession)。因此,如果您正在构建 B2BUA(以及 WebSession,如果您在应用程序中包含 Web),则可以在 SIP 会话之间共享其中的属性,但它的时间始终限于 SIP 会话和 HTTP 会话生命周期的上下文。

然而,ServletContext 是在应用程序的生命周期内存在的,并且完全独立于 SIP 调用或 Web 请求,因此您只想将那些寿命更长并且您不想保留或存储的属性放在那里在数据库中。