Tomcat源码分析--Connector(连接器)
2016-04-27 13:15
621 查看
在上一篇中分析了Tomcat的启动过程。也提到了Service会启动Connector。现在让我们来看看Connector具体做了什么。
从Connector类中有两个比较重要的属性:protocolHandler(协议)和adapter(适配器)。既然是连接器,(1)需要具备接收客户端请求的连接。(2)然后将客户端的socket请求的数据,解析和包装成为Http数据格式。(3)然后将Http数据包交给容器去处理。protocolHandler完成(1)(2),adapter完成(3)。
1.Connector构造函数
在Connector构造函数中,通过反射生成protocolHandler。协议的设置在conf/server.xml中配置,通过setProtocol来赋值。
2.Connector的初始化方法。
在Connector调用initInternal的初始化方法。主要完成了2个操作:
初始化适配器。
初始化protocolHandler的init()方法。
protocolHandler的init方法会调用父类AbstractProtocol的init方法。
其父类的init()方法会调用endpoint的init方法。endpoint提供了底层的网络i/o 连接。
3.Connector的Start方法。
介绍完Connector的Init方法,我们来看看Connector的start方法。
Connector方法中调用了protoHandler的start方法。protoHandler是个接口,我们以其具体的实现类Http11NioProtocol来介绍。从类名上可以看出,该类使用的是Java nio的方式进行连接的。Http11NioProtocol会最终调用其底层的Nio实现类NioEndPoint来接收请求。
至此Connector启动完成。
从Connector类中有两个比较重要的属性:protocolHandler(协议)和adapter(适配器)。既然是连接器,(1)需要具备接收客户端请求的连接。(2)然后将客户端的socket请求的数据,解析和包装成为Http数据格式。(3)然后将Http数据包交给容器去处理。protocolHandler完成(1)(2),adapter完成(3)。
1.Connector构造函数
在Connector构造函数中,通过反射生成protocolHandler。协议的设置在conf/server.xml中配置,通过setProtocol来赋值。
2.Connector的初始化方法。
在Connector调用initInternal的初始化方法。主要完成了2个操作:
初始化适配器。
初始化protocolHandler的init()方法。
protocolHandler的init方法会调用父类AbstractProtocol的init方法。
其父类的init()方法会调用endpoint的init方法。endpoint提供了底层的网络i/o 连接。
3.Connector的Start方法。
介绍完Connector的Init方法,我们来看看Connector的start方法。
Connector方法中调用了protoHandler的start方法。protoHandler是个接口,我们以其具体的实现类Http11NioProtocol来介绍。从类名上可以看出,该类使用的是Java nio的方式进行连接的。Http11NioProtocol会最终调用其底层的Nio实现类NioEndPoint来接收请求。
至此Connector启动完成。
相关文章推荐
- Nginx+tomcat+session共享
- tomcat和nginx gzip压缩
- MyEclipse部署到tomcat上的项目名不是我更改后的项目名怎么解决
- tomcat +nginx 配置
- 20160427-Android&Tomcat-RAS加密解密文本
- Jenkins部署Web项目到远程tomcat
- Tomcat 加载顺序
- eclipse下如何配置tomcat
- linux 配置多个tomcat(本文配置了两个)
- Eclipse中将tomcat日志输出重定向
- java _tomcat_mysql 部署
- 用jboss/tomcat启动socket mina的方式
- tomcat内存设置之startup.bat启动方式
- Nginx+Tomcat实现动静分离
- nginx整合tomcat
- Jetty和Tomcat的选择:按场景而定
- Ubuntu Tomcat自动启动+内存溢出
- 更改myeclipse工具的内存和tomcat的内存
- MyEclipse和tomcat结合编写jsp对于中文乱码的解决方法
- 利用ant将Web项目部署至远程Tomcat