tomcat架构分析

来源:互联网 发布:悉知和知悉 编辑:程序博客网 时间:2024/05/16 08:21

之前公司引入了docker,需要将项目布置到docker上,docker是一个轻量级应用发布平台,发布项目时间短,易于操作,只要一个war包,打包成镜像,利用dockerfile执行产生一个容器,该容器会被在已分配的主机的上随机产生,为了了解docker的容器启动机制,决定先研究tomcat的架构。在Google上也找到了一位牛人的博客,链接发出:

https://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/关于tomcat的架构我们先要熟悉,tomcat的基本使用,先谈基本然后再去了解为什么可以这样。


1.安装与配置tomcat

简单的说就是下载tomcat最新版本,自己去官网下就可以了。配置环境变量,右键我的电脑(win8/win10 此电脑)-属性-高级系统属性-环境变量,将你的jdk路径填到JAVA_HOME属性条中,不过我win10系统安装了jdk1.8没有配置,在cmd中输入Java -version也有版本号出来。不知道什么原因。


安装好jdk然后就是解压tomcat包,比如解压在 E:/tools/tomcat9/ 中,其中主要的文件夹是bin,lib,conf,webapps,然后在conf文件夹中找到server.xml和web.xml,主要是server.xml。

配置server.xml:

修改端口号。可以分当然我只用Java开发,一般是80**,如果你用PHP可配81**,一般是8080。端口号就是tomcat监听机制的一部分,监听组件时刻关注该端口上是否有http请求,如果有他将解析请求,并组装信息发给其他组件在服务器内做相关处理,最后返回信息给发送请求方。

例如:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

发布自己的项目,比如我的项目在E:/workspace/TBao/webapps

<Context docBase="E:\workspace\TBao\webapps" debug="0" auto-reloading="false"></Context>

如果你要优化tomcat性能,就要查相关信息,可以设置session超时时间,就是在web.xml中配置。我讲一下我的优化过程,修改了端口号为8080 的connector,设置了最大最小缓存池,将bio模式改为了nio,至于具体怎么改,请google。接下来将进入正题。

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

你可以将session的超时时间设置为180,单位是分钟。

然后启动tomcat,如果显示成功画面恭喜你配置tomcat成功了。

你也可以在eclipse的配置页面配,只是在eclipse中,可以配置很多个服务器,每个服务器都有一套配置文件,这里我也有个问题,eclipse中配置的tomcat们在启动的时候是怎么个流程,还会不会去读取 E:/tools/tomcat9/ 中的配置。虽然更多人开发选择了intellij idea但是对于运维来说eclipse还是很适合的,而突然选另一个工具开发运维也需要时间适应。

2.tomcat底层实现

已经知道了tomcat的使用,就是一个servlet-jsp服务器,理解一个http请求从发出到服务器处理,再到浏览器显示内容,整个过程中,tomcat服务器都做了什么。用户点击一个请求比如访问http://www.demo.com/test/login.html ,浏览器组装socket对象通过管道形成消息体,借助http/tcp高速公路,来到我的主机www.demo.com/test/ ,当然域名会被解析为ip地址,想要访问login.html这个资源。再细看,发出请求后,主机上tomcat监听器监听80端口有你的请求,这时候connector组件解析消息体,创建servletRequest,servletResponse将信息封装到其中,然后将调用container组件,也就是容器组件,最后调用doGet或者doPost方法,再调service()方法。

先到这里,明天继续。




//争取每一个点都是我脑子里出来的,写出好东西分享给大家。

0 0
原创粉丝点击