我已经读过,通过使用SIP在Tomcat 7中处理HTTP请求可以提高Web应用程序的性能,但我不确定这是多么真实。我已经读过,当浏览器发出HTTP请求时,处理该请求的线程会产生一个新的线程,该线程位于SIP端点并等待新的活动,然后释放最初处理该请求的线程。但是现在仍然有一个线程在SIP端点处空闲侦听。这真的更好吗?
答案 0 :(得分:2)
应该明确的是,虽然融合的HTTP / SIP应用程序可以在服务器端提供大量的异步处理支持,但只有异步处理功能才能为Web服务器提供更高的性能。
Java Servlet 3.0引入了对异步请求处理的支持,Apache Tomcat 7实现了Java Servlet 3.0,因此您可以支持异步处理。
Mobicents Sip Servlets 2.x(http://www.mobicents.org/products_sip_servlets.html)平台已经与Tomcat 7集成,而团队正在努力与JBoss AS 7集成,这意味着融合的HTTP /在MSS 2.x平台上运行的SIP应用程序,可以受益于异步处理支持。您可以看到使用异步处理支持here的融合HTTP / SIP应用程序的示例。
Java Servlet 3.0异步支持提供的是一种将请求放入队列,同时等待资源可用或等待事件,并回收原始线程,从而使其可用于新客户端的方法。当请求在队列中时,不会为此消耗Web服务器线程。这是处理可用Web服务器线程的更有效方法。
因此,对于您的问题,融合应用程序无论如何都会等待某些SIP消息,例如SIP INVITE或SIP BYE,并将根据需要采取行动。如果现在在这张图片中添加Java Servlets 3.0异步处理,您可以拥有一个用户界面(客户端的网页),可以在每个SIP消息中更新,而无需任何昂贵的AJAX轮询机制或专有API。这将通过在等待SIP消息时将客户端的请求放入队列并且将释放原始线程来实现。当出现新的SIP消息时,将向客户端发送响应。
希望帮助。