概述
JBossWeb 是JBoss 中的 Web 容器,他是对 Tomcat 的封装,本文以 Http 连接器为例,简单说明 JBossWeb/Tomcat 初始化连接器和处理 Http 请求过程 。本文内容提要:
- Connector 初始化开始过程
- 如何理解 max-connections
- JIoEndpoint 处理 Socket 请求
Connector 初始化开始过程
如下图所示:
- WebConnectorService 指的是 `org.jboss.as.web.WebConnectorService`
- Connector 指的是 `org.apache.catalina.connector.Connector`
- Http11Protocol 指的是 `org.apache.coyote.http11.Http11Protocol`
- JIoEndpoint 指的是 `org.apache.tomcat.util.net.JIoEndpoint`
Connector init()
Connector 可以是 HTTP Connector,也可以是 AJP Connector,Connector 中有 ProtocolHandler 和 Adapter 属性,Connector 初始化主要包括:初始化 Adapter,且将初始化的 Adapter 的 设定给 ProtocolHandler,然后调运 ProtocolHandler 的初始化方法,如下面代码段所示:
// Initializa adapter
adapter = new CoyoteAdapter(this);
protocolHandler.setAdapter(adapter);
IntrospectionUtils.setProperty(protocolHandler, "jkHome", System.getProperty("catalina.base"));
try {
protocolHandler.init();
} catch (Exception e) {
throw new LifecycleException(MESSAGES.protocolHandlerInitFailed(e));
}