默认连接器的UML图和流程分析

默认连接器
一、uml图:
1、所有的连接器都要实现connector接口,必须创建request对象和response对象,httpconnector作为默认连接器,肯定也是要实现connector接口的,同时httpconnector. createrequest方法创建了request对象,httpconnector. createresponse方法创建了response对象;
2、httpconnector接收到客户端请求后,解析请求参数、解析请求header信息、创建response和request对象如果放在connector里面处理,势必会影响到后续其他客户端请求的及时响应,因此tomcat采取了httpprocessor对象来进行这些后续处理,而且httpprocessor是在单独的线程里面运行,不会卡住主线程,再有新的客户端请求到达时,会创建新的httpprocessor对象并开启新的线程运行,这样就能保证连接器能高效及时的响应客户端请求;
3、httpconnector类维护着一个httpprocessor的实例池,同时还有池的最小和最大个数的变量,如下:
在start方法启动连接器时,会初始化minprocessors个httpprocessor对象放到processors池子里面:
创建httpprocessor对象时,如果池子里有未使用的httpprocessor对象,则直接从池子里面取,如果当前正在运行的httpprocessor对象大于最大个数,则丢掉请求不处理,否则创建一个httpprocessor对象并放到池子里,然后返回这个httpprocessor对象:
1、request对象封装了客户端的请求信息,response对象封装了返回给客户端的响应信息;
2、httprequestimpl类是request接口的实现类,cookies数组成员变量存储了请求的cookie信息,headers变量是一个hashmap类型,存储了请求head信息的键值对,parameters存储了相关参数的键值对,这是一个parametermap类型的hash表类型,比hashmap封装扩展了锁定属性;
3、为避免servlet程序员拿到request对象,因为权限过大而造成安全问题,这里采用了门面模式封装了一个httprequestfacade对象,其所有功能都委托给request对象实现,但是httprequestfacade提供的接口有限,将其提供给servlet程序员不会造成安全问题;
4、同样的,httpresponseimpl类是response接口的实现类,httpresponsefacade作为httpresponseimpl的门面对象提供给servlet程序员使用,从而很好的解决了安全性问题;
二、流程分析:
1、httpconnector连接器实现了runnable接口,也就是说他是运行在一个线程里面的,run方法作为线程的运行方法,首先调用serversocketfactory.createsocket创建一个serversocket对象,并且默认在8080端口上监听,然后调用serversocket.accept在8080端口等待客户端请求并阻塞线程;
2、如果有客户端连接请求到达,则httpconnector从accept处返回,然后调用createhttpprocessor创建httpprocessor对象;
3、在创建httpprocessor对象时,在httpprocessor构造函数里面创建httprequest对象和httpresponse对象;
4、httpconnector在调用createhttpprocessor后,会将服务器与客户端连接的socket对象赋值给httpprocessor对象,然后调用httpprocessor.start方法,由于httpprocessor也实现了runnable接口,因此在start方法里面就将httpprocessor放到线程里运行;
5、httpprocessor线程的run方法里面,首先获取刚才赋值的socket对象(如果socket为null则会阻塞到socket被赋值),然后对request请求调用parseconnection, parserequest, parseheaders解析请求信息并设置request的成员变量;
6、最后将request和response对象传递给container.invoke方法,将后续的请求处理交给container容器处理;

电警超速抓拍补光灯会对环境造成污染吗
纽扣电池的分类
回顾语音—讯飞开放人脸识别的介绍
影响泵用机械密封外部条件的研究
Linksys的默认密码_linksys无线路由器怎么设置密码
默认连接器的UML图和流程分析
详解PDCA
电子万年历设计方案(6)
小米6最新消息:雷军隐瞒的杀手锏,小米6中国红版将上市!
消防应急灯能照明多久
意法半导体推全球首款全非接触式测试技术晶圆
S7-200系列PLC的存储器空间
首款USB 3.0收发器TUSB1310 可实现高速数据传输
磁共振无线充电或为5G时代最被低估的潜力股
工信部严打改号软件,重压之下仍屡禁不绝
AD9361数据路径在低电压差分信号(LVDS)模式下运行
工业RFID应用之技术篇(五):基于CANopen网络的RFID低频读写器通信实例
亿纬锂能46系大圆柱意向订单约472.31GWh
BOSCH在中国第二个生产基地青岛开建
EMUI11其实就是鸿蒙吗?有什么区别吗