设为首页 收藏本站
查看: 766|回复: 0

[经验分享] 解析TOMCAT框架 .

[复制链接]

尚未签到

发表于 2018-12-5 12:53:52 | 显示全部楼层 |阅读模式
  毕竟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里面, 我们可以看到“”这里的"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来处理。
  比如:
  
  前者交给foo这个Context来处理, 后者交给bar这个Context来处理。
  很明显吧! context的意思其实就是一个web app的意思。
  我们通常都会在server.xml里面做这样的配置
  
  这个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里面, 我们可以看到“”这里的"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来处理。
  比如:
  
  前者交给foo这个Context来处理, 后者交给bar这个Context来处理。
  很明显吧! context的意思其实就是一个web app的意思。
  我们通常都会在server.xml里面做这样的配置
  
  这个context容器,就是用来干我们该干的事儿的地方的。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643656-1-1.html 上篇帖子: tomcat http Basic 认证 下篇帖子: 通过域名访问tomcat服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表