Jetty的架构
Jetty Server 就是由多个Connector(连接器)、多个Handle(处理器)、以及一个线程池组成。
Jetty Connector 的工作原理
1、Acceptor 监听连接请求,当有连接请求到达时就接受连接,一个连接对应一个 Channel,Acceptor 将 Channel 交给 ManagedSelector 来处理。
2、ManagedSelector 把 Channel 注册到 Selector 上,并创建一个 EndPoint 和 Connection 跟这个 Channel 绑定,接着就不断地检测 I/O 事件。
3、I/O 事件到了就调用 EndPoint 的方法拿到一个 Runnable,并扔给线程池执行。
4、线程池中调度某个线程执行 Runnable。
5、Runnable 执行时,调用回调函数,这个回调函数是 Connection 注册到 EndPoint 中的。
6、回调函数内部实现,其实就是调用 EndPoint 的接口方法来读数据。
7、Connection 解析读到的数据,生成请求对象并交给 Handler 组件去处理。
Jetty Handle的工作原理
1、Handle就是一个接口,它有一堆实现类,Jetty的Connector组件调用这些接口来处理Servlet请
Jetty Handle的类型
1、协调Handle:这种 Handler 负责将请求路由到一组 Handler 中去,
2、过滤器Handle:这种 Handler 自己会处理请求,处理完了后再把请求转发到下一个 Handler,
3、内容Handle:这些 Handler 会真正调用 Servlet 来处理请求,生成响应的内容,