首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

tomcat 架构、源码学习(1)

2012-09-17 
tomcat 架构、源码学习(一)阅读:how tomcat works笔记?1. 一个简单的server服务器。通过socket实现。ServerSo

tomcat 架构、源码学习(一)

阅读:how tomcat works笔记

?

1. 一个简单的server服务器。

通过socket实现。

ServerSocket server = new ServerSocket(int , int , InetAddress );

Socket socket = server.accept();

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

????? ...

?

2.解析http请求,获得uri。从中得到ServletName。

3.通过ClassLoader查找并导入相应的Servlet。并实例化

??????? java classloader原理初探

4.包装Request,Response为RequestFacade,ResponseFacade,并在调用相应Servlet的service方法时传入这2个对象。

??????? Facade模式。

5.tomcat中对错误信息处理的国际化处理。每一个包下对应一个StringManager对象,读取该包下的LocalStirngs.properties文件。

?????? StringManager:单例,内部以HashTable为数据结构,key为包名。

???????????????????????????? .getManager(packegeName);

6.Tomcat组件:(粗)

?????? 连接器/容器(web容器、应用服务器)

?????? 3个模块:Connector、Startup、Core

??????????????? Startup:bootstrap,用来启动应用

??????????????? Connector:分为五组。

????????????????????????????? 连接器和它的支撑类<处理类>(HttpConnector和HttpProcessor)。

????????????????????????????? HttpRequest及其辅助类。

????????????????????????????? HttpResponse及其辅助类。

????????????????????????????? Facade包装类(RequestFacade,ResponseFacade)。

????????????????????????????? Constant类。

???????????????? Core:分为2组。

??????????????????????????? ServletProcessor(处理Servlet动态数据请求)。

??????????????????????????? StaticResourceProcessor(处理服务器静态资源)。

?????????????????????? 猜想:正因为有了这两个分支,才使得tomcat可以通过配置集成到其他web服务器中,使用其静态资源处理能力。而tomcat专注于动态应用的处理。

7.解析Http请求。(难点)<也是性能调节之处>

?????????? 从获得的socket中解析出requestLine、headers、cookies、parameters;

?????????? 几个步骤:1.获取socket的输入流。

????????????????????????? 2.解析请求行(method uri protocol)。

????????????????????????? 3.解析头部(name:value)<cookie:name=value;name=value;>。

????????????????????????? 4.解析cookie,jsessionid。

????????????????????????? 5.获取参数,查询字符串中即(?userName=tarzan&password=pwd),以及请求内容中。

8.tomcat连接器:(可插拔的)有coyote,mod_jk, mod_jk2, mod_webapp.

?????????? 满足条件:1.实现org.apache.catalina.Connector接口。

????????????????????????? 2.必须创建请求对象,该对象要实现org.apache.catalina.Request接口。

????????????????????????? 3.必须创建响应对象,该对象要实现org.apache.catalina.Response接口。

问题1.字节数值代替字符串有什么好处?

????? 2.对象池,连接池。

HTTP 1.1新特性

????? 1.持久连接。请求头部中connection:keep-alive;

????? 2.块编码。<4\r\n abcd 0\r\n(结束)>

????? 3.状态100(持续状态)的使用。<轮询请求发送>

9.connector,container,processor。

?

?

热点排行