jetty如何处理多个请求

时间:2012-05-14 16:48:35

标签: jetty

我使用jetty / tomcat应用服务器的弹簧网络应用程序已经使用了大约两年了,但是我所得到的仍然是如何在这些服务器中处理多个请求。我知道春天有助于制作单身,但我的理解仅限于此。 有人可以指出任何可以帮助我理解如何处理多个请求的好资源。

1 个答案:

答案 0 :(得分:31)

这可以在很多级别上回答我已经盯着它看了两天试图弄清楚它是如何回答的...所以我会对它进行一次高水平的拍摄。

有一个Jetty侦听的服务器端口和一些接受器线程,它们的作用是获取客户端和服务器端之间建立的连接对象。一旦你有了这个连接,它就可以通过jetty处理程序体系结构进行身份验证,或者拉出会话ID并将会话对象附加到请求中。然后它进入servlet处理程序并找到相应的servlet,然后开始处理servlet-api。此时,您在servlet-api中的所有时间都有一个分配给您的请求的线程,至少在servlet 2.5下。在servlet 3.0中,您可以使用一些异步机制,或者您可以使用jetty-continuations作为在servlet 2.5 api上获得异步支持的方法。

无论如何,服务器使用一个线程池来为这些连接器分配线程,这些连接器最终是花在servlet-api上的所有时间。 jetty continuation api和较新的servlet 3.0支持提供了将线程释放回主线程池的机制,因此他们可以花时间接受和处理其他请求。

在与使用nio api相关的覆盖范围内显然还有很多事情,以及jetty如何有效地管理所有这些内容,但也许这足以满足您的初始问题。如果没有,请随时仔细阅读码头文档(http://www.eclipse.org/jetty/documentation/current)或查看码头邮件列表。有一些关于jetty-9优化的讨论,因为它与Webtide(http://webtide.com/blogs)博客中的http,spdy和websocket连接处理和处理有关。