现在的位置: 首页 > 综合 > 正文

jetty学习笔记-jetty全局

2013年08月21日 ⁄ 综合 ⁄ 共 1324字 ⁄ 字号 评论关闭

jetty全局

上篇文章入口看到server,下面看下server的结构

jetty里面几个主要的概念:

  • connector:接收连接
  • handler:处理请求
  • threadpool:线程池,线程的统一管理

Server将这几个重要概念联系到了一起,从继承结构来看,server本身算是一个可以包含其他handler(也就是个container)的handler,其中又包含了connenctor和threadpool,在内部把这几个部分连到了一起。

Server.doStart()方法:

第一步:新建threadpool,并add到container中,方便后面使用

setThreadPool(new QueuedThreadPool());

第二步:执行handlers的doStart();

super.doStart(); 

第三步:执行connector的初始化,打开端口,接收请求

_connectors[i].start();

connector

  • SslConnector:Secure Sockets Layer,提供一些认证等安全控制的方法
  • BlockingChannelConnector:This connector uses efficient NIO buffers with a traditional blocking thread model
  • SelectChannelConnector:This connector uses efficient NIO buffers with a non blocking threading model. 
  • Ajp13SocketConnector:ajp协议通信的时候使用
  • NetworkTrafficSelectChannelConnector:支持NetworkTrafficListener(NetworkTrafficListener:A listener for raw network traffic within Jetty.)
  • InheritedChannelConnector:首先获取继承自启动虚拟机(VM)的某个进程的channel

handler

主要三大类handler

  • 简单的handler:直接继承自AbstractHandler,实现handler功能
  • handlerWrapper:装饰模式,在handler外面做一层代理,做一些handler之外的事情
  • handlerCollection: handler的容器

lifecycle

jetty中的所有组件都实现LifeCycle接口,组件的每一个动作都会调用对应lifeCycle中的方法(start、stop等),通知_listeners执行对应的方法。

connector初始化流程

以socketConnect为例,清晰一点。

接收请求处理流程

最后进入到connection的handler

忘了把目录结构列一下了

目录名称 作用
bin 启动等脚本
contexts 热部署相关文件
contexts-available pre-context
lib jar 包
etc 各种配置文件
javadoc api文档
logs 默认日志目录
resources 其他资源目录
webapps 存放web应用
start.jar 启动jetty所需类等

抱歉!评论已关闭.