Jetty是一个基于Java语言实现的免费的http应用服务器。该项目成立于1995年,到目前为止依旧是和Tomcat齐名的、使用最为广泛的Java Web容器之一。有大量的成功应用实例,都是基于Jetty开发的,比如Apache Geromino、IBM Tivoli、Cisco SESM、JBoss等等。
第一篇除了简单的简介之外,我还想从多线程优化的角度切入,去分析一下Jetty的核心代码为高并发开发和优化做出的一些切实的努力。这些编程技巧和软件的设计方法通过灵活应用,也能运用于我们的工作实践中。
1、Jetty架构简述
整个Jetty的核心组件是有Server和Connector二个组件构成的,整个Server组件是基于Handler容器工作的,它类似于Tomcat的Container容器。而Jetty中的另一个组件Connector组件是负责接受客户端用户的连接请求,并将请求分配给一个处理队列去执行的。
显而述之:Server是Jetty的核心元素,大量的工作都是围绕着它展开的,而Server内维护着一组Connector,每个Connector表示一个可用的服务,每个客户端连接都是针对一个Connector发起的。Container接口表示可以被JMX管理的对象。LifeCycle接口定义了具有可管理生命周期的对象。Jetty的所有组件的生命周期管理基于观察者模式,在LifeCycle接口中,又定义了LifeCycle.Listener接口作为观察者对象。
2、Jetty服务器初始化
本次讨论初始化容器的业务逻辑实现主要着眼于在并发方面做出的努力和优化。代码版本是9.2.10,虽然不同版本代码实现可能有些差异,但是总体思想和架构是一致的。
2.1 初始化线程池
J