解析TOMCAT框架 .

毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的。 所以得实践、实践、再实践。 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动过程。 如果有不明白的地方, 再来查阅本文, 看是否能得到帮助。 我相信这样效果以及学习速度都会好很多! 

1. Tomcat的整体框架结构 
   Tomcat的基本框架, 分为4个层次。 
   Top Level Elements: 
    Server 
    Service   
   Connector 
    HTTP 
    AJP 
   Container 
   Engine 
     Host 
   Context 
   Component  
    manager 
   logger 
   loader 
   pipeline 
   valve 
         ... 
   站在框架的顶层的是Server和Service 
   Server:  其实就是BackGroud程序, 在Tomcat里面的Server的用处是启动和监听服务端事件(诸如重启、关闭等命令。 在tomcat的标准配置文件:server.xml里面, 我们可以看到“<Server port="8005" shutdown="SHUTDOWN" debug="0">”这里的"SHUTDOWN"就是server在监听服务端事件的时候所使用的命令字) 
   Service: 在tomcat里面, service是指一类问题的解决方案。  通常我们会默认使用tomcat提供的:Tomcat-Standalone 模式的service。 在这种方式下的service既给我们提供解析jsp和servlet的服务, 同时也提供给我们解析静态文本的服务。 

   Connector: Tomcat都是在容器里面处理问题的, 而容器又到哪里去取得输入信息呢? 
Connector就是专干这个的。 他会把从socket传递过来的数据, 封装成Request, 传递给容器来处理。 
   通常我们会用到两种Connector,一种叫http connectoer, 用来传递http需求的。 另一种叫AJP, 在我们整合apache与tomcat工作的时候, apache与tomcat之间就是通过这个协议来互动的。 (说到apache与tomcat的整合工作, 通常我们的目的是为了让apache 获取静态资源, 而让tomcat来解析动态的jsp或者servlet。) 
   Container: 当http connector把需求传递给顶级的container: Engin的时候, 我们的视线就应该移动到Container这个层面来了。 
   在Container这个层, 我们包含了3种容器: Engin, Host, Context. 
   Engin: 收到service传递过来的需求, 处理后, 将结果返回给service( service 是通过 connector 这个媒介来和Engin互动的 ). 
   Host: Engin收到service传递过来的需求后,不会自己处理, 而是交给合适的Host来处理。 
Host在这里就是虚拟主机的意思, 通常我们都只会使用一个主机,既“localhost”本地机来处理。 
   Context: Host接到了从Host传过来的需求后, 也不会自己处理, 而是交给合适的Context来处理。 
   比如: <http://127.0.0.1:8080/foo/index.jsp> 
         <http://127.0.1:8080/bar/index.jsp> 
   前者交给foo这个Context来处理, 后者交给bar这个Context来处理。 
   很明显吧! context的意思其实就是一个web app的意思。 
   我们通常都会在server.xml里面做这样的配置 
   <Context path="/foo" docBase="D:/project/foo/web" /> 
   这个context容器,就是用来干我们该干的事儿的地方的。

 

毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的。 所以得实践、实践、再实践。 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动过程。 如果有不明白的地方, 再来查阅本文, 看是否能得到帮助。 我相信这样效果以及学习速度都会好很多! 

1. Tomcat的整体框架结构 
   Tomcat的基本框架, 分为4个层次。 
   Top Level Elements: 
    Server 
    Service   
   Connector 
    HTTP 
    AJP 
   Container 
   Engine 
     Host 
   Context 
   Component  
    manager 
   logger 
   loader 
   pipeline 
   valve 
         ... 
   站在框架的顶层的是Server和Service 
   Server:  其实就是BackGroud程序, 在Tomcat里面的Server的用处是启动和监听服务端事件(诸如重启、关闭等命令。 在tomcat的标准配置文件:server.xml里面, 我们可以看到“<Server port="8005" shutdown="SHUTDOWN" debug="0">”这里的"SHUTDOWN"就是server在监听服务端事件的时候所使用的命令字) 
   Service: 在tomcat里面, service是指一类问题的解决方案。  通常我们会默认使用tomcat提供的:Tomcat-Standalone 模式的service。 在这种方式下的service既给我们提供解析jsp和servlet的服务, 同时也提供给我们解析静态文本的服务。 

   Connector: Tomcat都是在容器里面处理问题的, 而容器又到哪里去取得输入信息呢? 
Connector就是专干这个的。 他会把从socket传递过来的数据, 封装成Request, 传递给容器来处理。 
   通常我们会用到两种Connector,一种叫http connectoer, 用来传递http需求的。 另一种叫AJP, 在我们整合apache与tomcat工作的时候, apache与tomcat之间就是通过这个协议来互动的。 (说到apache与tomcat的整合工作, 通常我们的目的是为了让apache 获取静态资源, 而让tomcat来解析动态的jsp或者servlet。) 
   Container: 当http connector把需求传递给顶级的container: Engin的时候, 我们的视线就应该移动到Container这个层面来了。 
   在Container这个层, 我们包含了3种容器: Engin, Host, Context. 
   Engin: 收到service传递过来的需求, 处理后, 将结果返回给service( service 是通过 connector 这个媒介来和Engin互动的 ). 
   Host: Engin收到service传递过来的需求后,不会自己处理, 而是交给合适的Host来处理。 
Host在这里就是虚拟主机的意思, 通常我们都只会使用一个主机,既“localhost”本地机来处理。 
   Context: Host接到了从Host传过来的需求后, 也不会自己处理, 而是交给合适的Context来处理。 
   比如: <http://127.0.0.1:8080/foo/index.jsp> 
         <http://127.0.1:8080/bar/index.jsp> 
   前者交给foo这个Context来处理, 后者交给bar这个Context来处理。 
   很明显吧! context的意思其实就是一个web app的意思。 
   我们通常都会在server.xml里面做这样的配置 
   <Context path="/foo" docBase="D:/project/foo/web" /> 
   这个context容器,就是用来干我们该干的事儿的地方的。

 

你可能感兴趣的:(manager,程序,tomacat框架)