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

[经验分享] tomcat工作原理及目录文件介绍

[复制链接]

尚未签到

发表于 2018-11-29 10:23:13 | 显示全部楼层 |阅读模式
tomcat工作原理及目录文件介绍

1、tomcat背景
自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUNJSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样tomcat就诞生了。tomcatjakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servletjsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servletjsp的最新规范都可以在tomcat的新版本中得到实现。其次,tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。tomcatApache的组合相当完美。
2、tomcat Server处理一个http请求的过程
  假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp
  1、请求被发送到本机端口8080,被在那里侦听的CoyoteHTTP/1.1 Connector获得
  2Connector把该请求交给它所在的ServiceEngine来处理,并等待来自Engine的回应
  3 Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
  4Engine匹配到名为localhostHost(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
  5 localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
  6Host匹配到路径为/wsotaContext(如果匹配不到就把该请求交给路径名为""Context去处理)
  7path="/wsota"Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
  8Context匹配到URLPATTERN*.jspservlet,对应于JspServlet
  9、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServletdoGetdoPost方法
  10Context把执行完了之后的HttpServletResponse对象返回给Host
  11HostHttpServletResponse对象返回给Engine
  12EngineHttpServletResponse对象返回给Connector
  13ConnectorHttpServletResponse对象返回给客户browser
3、tomcat目录详细解析
3.1、bin目录
bin目录主要用来存放tomcat的命令,很多环境变量也在此处设置。以.sh结尾的代表Linux下的命令;以.bat结尾的代表Windows下的命令。其中startup.bat代表windows系统下启动tomcat的命令;shutdown.bat代表Windows系统下关闭tomcat的命令。同理startup.sh代表Linux下的启动tomcat的命令;shutdown.sh代表linux下关闭tomcat的命令。详细介绍如下所示。
bin目录中的脚本说明

文件名称

文件作用

  catalina.sh
  tomcat主要脚本,用于启动和关闭tomcat服务器
  startup.sh
  启动运行tomcat实例,相当于 catalina.sh   start
  shutdown.sh
  停止tomcat实例的运行,相当于   catalina.sh stop
  daemon.sh
  tomcat服务的启动脚本,可以复制到/etc/init下使用
  catalina-tasks.xml
  定义tomcat载入的库文件,类文件
  version.sh
  查看当前tomcat的版本信息
  configtest.sh
  校验tomcat配置文件server.xml的格式、内容等是否合法、正确
  setclasspath.sh
  catalina.sh依赖这个脚本来设置tomcatclasspath等环境变量
  digest.sh
  用于生成加密过的tomcat用户密码
  tool-wrapper.sh
  一般和digest脚本结合使用
  bootstrap.jar
  tomcat启动时所依赖的一个类,在启动tomcat时会发现Using CLASSPATH: 是加载的这个类
  commons-daemon.jar
  jsvc工具所依赖的java
  commons-daemon-native.tar.gz
  jsvc工具,可以使tomcat以守护进程方式运行,需单独编译安装
  tomcat-juli.jar
  是一款在使用tomcat开发时十分关键的一款jar
  tomcat-native.tar.gz
  使tomcat可以使用apacheapr运行库,以增强tomcat的性能需单独编译安装
3.2、conf目录
  conf目录主要存放tomcat服务器全局配置的各种文件,详见以下说明。
conf目录中配置文件说明

  catalina.policy
  tomcat 安全机制的配置文件,默认情况下 tomcat   是非安全模式运行的,只有当tomcat-security命令行参数启动时这个文件才会被使用,该文件可以配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
  catalina.properties
  catalina.properties Catalina 的配置文件,主要有安全设置、类加载设置、不需要扫描的类设置、字符缓存设置四大块。配置tomcatclasspath
  context.xml
  tomcat的默认context容器,可被所有的web应用程序使用.这个文件默认地可以设置到何处访问各web应用程序中的web.xml文件。context.xml tomcat 6.0 时从 server.xml 中分离出来,主要用于项目部署的配置。
  server.xml
  tomcat中最重要的配置文件,也是最常用的一个,用于对整个容器进行相关的配置,解析器用这个文件在启动时根据规范"创建"容器
  web.xml
  tomcat的应用程序的部署描述符文件,是所有Web项目的缺省配置文件。
  tomcat-users.xml
  tomcat的角色(授权用户)配置文件,用于访问tomcat管理应用程序时的安全性设置,用server.xml中引用的默认的用户数据库域(UserDatabase Realm)使用它,所有的凭据都是默认被注释的。
  tomcat-users.xsd
  定义了 tomcat-users.xml 所使用到的标签
  logging.properties
  tomcat 的日志配置文件,用于配置tomcat的日志输出方式和日志级别。
  jaspic-providers.xml
  tomcat 实现了 JASPIC 1.1   Maintenance Release B 标准,并通过这个配置文件集成第三方   JASPIC 身份验证
  jaspic-providers.xsd
  定义了 jaspic-providers.xml 所使用到的标签
3.3、lib目录
lib目录下主要存放tomcat服务器所需要的所有Jar包。我们在连接数据库时常常烦恼每创建一个项目就要引入一个对应的oracleJar包或MySQLJar。但是如果你把这两个Jar包放在此目录下,就可以引入一次,以后再创建项目时不需要每次都引入Jar包。
3.4、logs目录
logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响) windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中。在linux环境中,控制台的输出日志在catalina.out文件中
3.5、temp目录
temp 文件夹用于存放 tomcat 在运行过程中产生的 临时文件temp 文件夹可以被清空,但是不能随意删除,否则会有未知错误发生。
3.6、webapps目录
webapps目录是tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。该目录中介绍如下
webapps目录介绍

  docs
  tomcat文档存放目录
  examples
  tomcat自带的一个独立的web应用程序例子存放位置
  host-manager
  tomcat的主机管理应用程序存放位置
host-manager目录中文件介绍

  META-INF
  整个应用程序的入口,用来描述jar文件的信息
  context.xml
  当前应用程序的context容器配置,它会覆盖tomcat/conf/context.xml中的配置
  WEB-INF
  用于存放当前应用程序的私有资源
  images
  存放应用程序相关图片文件
  index.jsp
  应用程序的网页文件
  manager.xml
  应用程序的管理配置文件
  manager
  tomcat的管理应用程序
  ROOT
  tomcat的应用程序的根,如果应用程序部署在ROOT中,则可直接通过http://ip:port 访问到
3.7、work目录
work目录用于存放JSP应用程序在部署时编译后产生的class文件,清空work目录,然后重启tomcat,可以达到清除缓存的作用。
3.8、LICENSE 文件
  LICENSE 文件是tomcat 开源许可证文件。
3.9、NOTICE 文件
  NOTICE 文件是tomcat 说明文件。
3.10、RELEASE-NOTES 文件
  RELEASE-NOTES 文件是tomcat 版本说明文件。
3.11、RUNNING.txt 文件
  RUNNING.txt 文件是tomcat 帮助文件(使用指南)。
4、catalina.sh | catalina.bat脚本文件使用方法
  语法格式:catalina.sh 选项
  例如:catalina.sh start #启动tomcat
  catalina.sh脚本可用选项如下:
catalina.sh脚本选项及说明

选项名称

选项作用

  debug
  debug模式启动
  debug -security
  启用catalina.policy文件
  jpda start
  jpda(Java Platform Debugger Architecture)调试器的模式启动
  run
  即使是在linux,也不会将输出重定向到日志文件,就像和windows(那个一直开着的黑窗口)一样的效果
  start
  启动tomcat
  stop n
  停止tomcat,最多有n秒的延迟来处理释放资源等的操作
  stop
  相当于 stop 5
  stop n -force
  停止tomcat,最多n秒延迟,n秒之后会强制killtomcat
  stop -force
  相当于 stop 5 --force
  configtest
  检测配置文件${catalina.home}/conf/server.xml语法
  version
  tomcat版本信息
5、tomcat环境变量说明
tomcat环境变量说明

环境变量名称

环境变量说明

  CATALINA_HOME
   tomcat安装目录
  CATALINA_OPTS
  一般是传递JVM参数使用的,比如-Xmx256M
  CATALINA_TMPDIR
  tomcat临时文件目录
  JAVA_HOME
  JDK安装目录
  JRE_HOME
  JRE安装路径
  JAVA_OPTS
  传递JVM参数使用的,比如-Xmx256M
  JPDA_TRANSPORT
  JPDA调试器使用的传输协议
  JPDA_ADDRESS
  制定和catalina.sh jpda start 一起使用的jpda地址
  JSSE_HOME
  指定用于https使用的Java Secure SocketsExtension的位置
  CATALINA_PID
  进程描述符位置




运维网声明 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-641065-1-1.html 上篇帖子: tomcat + memcached session manager共享session 下篇帖子: kubernetes tomcat JVM自动监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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