我对tomact的源码不了解,可以说基本不了解,看到一篇文章感觉挺好的,http://www.importnew.com/21112.html,分享下。
tomact有2个核心模块一个Connector和Container。我们今天说说Connector吧。
protocol
tomact中server的配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
1
2
3
Connector类的代码片段
“`
/**
* Set the Coyote protocol which will be used by the connector.
*
* @param protocol The Coyote protocol name
*/
public void setProtocol(String protocol) {
if (AprLifecycleListener.isAprAvailable()) {
if ("HTTP/1.1".equals(protocol)) {
setProtocolHandlerClassName
("org.apache.coyote.http11.Http11AprProtocol");
} else if ("AJP/1.3".equals(protocol)) {
setProtocolHandlerClassName
("org.apache.coyote.ajp.AjpAprProtocol");
} else if (protocol != null) {
setProtocolHandlerClassName(protocol);
} else {
setProtocolHandlerClassName
("org.apache.coyote.http11.Http11AprProtocol");
}
} else {
if ("HTTP/1.1".equals(protocol)) {
setProtocolHandlerClassName
("org.apache.coyote.http11.Http11Protocol");
} else if ("AJP/1.3".equals(protocol)) {
setProtocolHandlerClassName
("org.apache.coyote.ajp.AjpProtocol");
} else if (protocol != null) {
setProtocolHandlerClassName(protocol);
}
}
}“`
我们可以看到org.apache.coyote.http11.Http11Protocol是默认的协议,这里我们也可以配置其他的吧。
ProtocolHandler
继承关系
到这里我们可以看到了server中配置的协议和ProtocolHandler的关系;页可以知道了server中,除了配置协议,也可以直接配置类的名字。