tomcat Connector 连接器
2014-12-30 19:09
218 查看
连接器的核心功能,本文去除非核心功能,留下整个程序的框架,便于理解。
1、接受连接请求
2.创建request,和response.
3.调用容器对应的Invoke方法,
首先看类的依赖结构。
1.Connetor构造方法,根据具体的协议名字,创建协议处理器,主要有NIO,BIO,AJP,协议。如果要自定义协议处理剂最重要的协议处理器了。如图,协议处理需要实现ProtocoHandler接口,
构造函数输入为协议名称
publicConnector(Stringprotocol){ setProtocol(protocol); //Instantiateprotocolhandler ProtocolHandlerp=null; try{ Class<?>clazz=Class.forName(protocolHandlerClassName); //实例化一个协议处理器 p=(ProtocolHandler)clazz.newInstance(); }catch(Exceptione){ log.error(sm.getString( "coyoteConnector.protocolHandlerInstantiationFailed"),e); }finally{ this.protocolHandler=p; } if(!Globals.STRICT_SERVLET_COMPLIANCE){ URIEncoding="UTF-8"; URIEncodingLower=URIEncoding.toLowerCase(Locale.ENGLISH); } }
2.createRequest和相应此处不仔细深入。很简单。就是创建请求和相应对象
publicRequestcreateRequest(){ Requestrequest=newRequest(); request.setConnector(this); return(request); } /** *Create(orallocate)andreturnaResponseobjectsuitablefor *receivingthecontentsofaResponsefromtheresponsibleContainer. */ publicResponsecreateResponse(){ Responseresponse=newResponse(); response.setConnector(this); return(response); }
3.启动和关闭。是默认方法;
protectedvoidstartInternal()throwsLifecycleException{ //Validatesettingsbeforestarting if(getPort()<0){ thrownewLifecycleException(sm.getString( "coyoteConnector.invalidPort",Integer.valueOf(getPort()))); } setState(LifecycleState.STARTING); try{ protocolHandler.start(); }catch(Exceptione){ StringerrPrefix=""; if(this.service!=null){ errPrefix+="service.getName():\""+this.service.getName()+"\";"; } thrownewLifecycleException (errPrefix+""+sm.getString ("coyoteConnector.protocolHandlerStartFailed"),e); } }
protectedvoidstopInternal()throwsLifecycleException{
setState(LifecycleState.STOPPING);
try{
protocolHandler.stop();
}catch(Exceptione){
thrownewLifecycleException
(sm.getString
("coyoteConnector.protocolHandlerStopFailed"),e);
}
}
我们从代码看到ProtocoHandler的重要性了明天再看
相关文章推荐
- [转]Loadrunner Error code 10053 & Tomcat 连接器(connector)优化
- Tomcat源码解析(五):Connector连接器的初始化和启动流程
- Tomcat原理学习---连接器Connector(一)
- Tomcat源码分析--Connector(连接器)
- 如何为一个高负荷站点配置tomcat连接器(connector)【译文】(第一篇)
- Tomcat7.0.42源码研读之网络连接器Connector(三)
- Tomcat源码阅读系列(四)Connector连接器
- Tomcat7-Connector(连接器)学习
- loadrunner Error code 10053 & Tomcat 连接器(connector)优化
- Tomcat -- 源码分析No2(连接器Connector)
- 如何为一个高负荷站点配置tomcat连接器(connector)【译文】(第一篇)
- 攻城狮在路上(肆)How tomcat works(三) 连接器:Connector
- 模拟tomcat连接器
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
- 使用APR连接器 -整合Tomcat与Apache
- tomcat connector优化
- 企业搜索引擎开发之连接器connector(二)
- The Apache 和Tomcat Connector 连接 快速指导 - Generic HowTo
- Tomcat: Connector中HTTP与AJP差别与整合
- 企业搜索引擎开发之连接器connector(十)