注:这篇文章是根据"How Tomcat Works"里面讲解的内容提取的。这本书剖析的是Tomcat4.1.12和5.0.18
原书是为了用Java技术开发的任何人,尤其是:
- 对servlet容器如何工作感兴趣的servlet/jsp程序员;
- 想要加入Tomcat开发团队的人,需要先学习现有代码是如何工作的;
- 没有涉及过网络开发,但是却对软件开发有大致的兴趣的人,从书中能够学习到一个大型的应用软件,比如说Tomcat是如何设计和开发的;
- 需要配置和个性化Tomcat的人。
简单地说,一个Servlet容器包含 :
- 创建一个request对象,包含调用的servlet可能用到的信息,像parameters, headers, cookies, querystring, URI,等。一个request对象实现javax.servlet.ServletRequest接口或者javax.servlet.http.ServletRequest接口。(后者extends前者)
- 创建一个response对象,它被调用的servlet是用来发送到客户端。一个response实现javax.servlet.ServletResponse接口或者javas.servlet.http.ServletResponse
- 调用servlet的service方法,将request和response对象传过去。这里,servlet读request对象的values并去写到response对象。
Catalina包含两个模块 :connector和container. 一个container对应多个connector。
The connector is there to connect a request with the containers. 它对它接收到的每一个HTTP request创建一个request对象和一个response对象。container接受connectors传过去的request和response对象,并负责调用servlet的service方法。
上面的描述只是冰山一角,container还要做很多事情,比如说,在它调用一个servlet的service方法之前,它必须load那个servlet,验证用户(如果需要的话),更新用户的session,等。 所以,一个容器使用很多不同的模块来处理,比如说:manager模块来处理用户sessions, loader模块来load servlet classes.
全书有20章,但是我们只能够免费获得前5章的电子书。