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

[经验分享] tomcat 的使用详解

[复制链接]

尚未签到

发表于 2018-12-2 13:12:07 | 显示全部楼层 |阅读模式
  一、tomcat 介绍
     tomcat是基于JDK的web服务器,其能够运行Servlet和JSP规范。tomcat 5支持最新的Serlet 2.4和JSP 2.0规范。tomcat实际上是Apache服务器的扩展,但它是独立运行的。运行tomcat时,它实际上作为一个与Apache独立的进程,是单独运行的。Apache为HTML页面服务,而tomcat实际上运行JSP页面和Sservlet。tomcat具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是tomcat的默认模式。不过对于静态的HTML处理能力上,Apache能力更强。由于它的处理并发连接的效果不好,使用时通常前端使用Apache来做反向代理。
     官网:tomcat.apache.org
  
附录:其他的java web服务器实现
            商业版本:WebSphereWebLogicOc4j… …
            开源实现:TomcatjettyResin
  二、tomcat的一些知识点
  1、tomcat代码执行过程:



  
GC: Garbage Collector
  JVM的运行时区域:
  方法区:线程共享,用于存储被JVM加载的class信息,常量,静态变量,方法等。
  堆:是jvm所管理的内在中最大的一部分,也是GC管理的主要区域,主流的GC算法基于代收集的机制。
  Java栈:线程私有,存储线程自己的局部变量。
  PC寄存器:线程私有的存储空间,程序的指令指针。
  代码执行过程:
  jsp --> jasper --> servlet(PAGE_jsp.java) --> complier --> bytecode (PAGE_jsp.class) --> JVM
  

  2、tomcat的配置文件

  server.xml:主配置文件
  

  context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序自己目录下的WEB-INF目录;此context.xml为每个webapp提供默认配置
  web.xml:每个webapp只有在部署后才能被访问,这些配置文件通常位于webapp应用程序自己的目录下的WEB-INF目录中;此文件则用于各webapps定义默认的部署方式
   tomcat-users.xml:用户认证的账号和密码文件

  catalina.policy:当用户使用 -security选项启动tomcat实例时会读取此配置文件来实现其安全运行策略
  catalina.properties:java属性定义文件,用于设定类加载器路径等,以及一些调优
  logging.properties;日志相关的配置信息
  3、WebAPP组织结构
  WEB-INF/:当前webapp的私有资源目录,通常存放当前webapp自用的web.xml
  META-INF/:当前webapp的私有资源的目录,通常存放当前webapp自用的context.xml
  classes/:类文件,当前webapp的私有类
  lib/:当前webapp的私有类,被打包成jar格式
  4、tomcat的常用组件
  每个组件几乎都是通过特有的类来实现,而且有的组件还不止一种实现方式。
  Server:tomcat实例,即运行的一个jvm进程,监听在8005端口,接收“SHUTDOWN”。各server监听的端口不能相同,因此,一个物理主机上能启动多个server实例运行在不同的端口上。
  service:用于实现将一个或多个connector关联至一个engine。
  connector组件:进入tomcat的请求可以分为两类,tomcat作为独立的应用程序服务器,请求将来自于浏览器,协议有http和https
  tomcat作为应用程序服务器,请求来自于前面反代主机:
  httpd:http,https,ajp
  nginx:http,https
  属性:
  address:监听的IP地址;
   maxThreads:最大并发连接数,默认为150;
  port:监听的端口;
  protocol:连接器使用的协议,一般为HTTP/1.1或AJP/1.3;
  redirecPort:重定向端口;
  connectionTimeout:连接的超时时长,单位为毫秒,默认为60000;
  acceptCount:定义等待队列的长度;
  Engine:Servlet的一个实例,即servlet引擎,其内部可以有一个或多个host组件来定义站点,通常通过default定义虚拟主机:
  属性:name defaulthost jvmroute
  Host组件:
  位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面示例中的定义:
  

  。。。。。。。还有几个组件,使用时注意
  ①一个物理主机上启动多个server实例应该使用不同的端口
  ②service:用于实现将一个或多个connector关联至一个engine,即一个service中只能有一个service,可以有多个connector。
  ③Engine:Servlet的一个实例,即servlet引擎,其内部可以有一个或多个Host组件来定义站点;通常需要通过defaultHost的属性定义默认虚拟主机;
  ④一个host中可以有多个context组件
  三、tomcat使用实例
  ① 1)使用http协议
       前端使用httpd反向代理
    后端使用两个tomcat服务器
  实现负载均衡
  2)前端httpd 的配置:
  在/etc/httpd/conf/中添加:
  

  BalancerMember http://172.18.34.1:8080
  BalancerMember http://172.18.34.2:8080
  ProxySet lbmethod=byrequests
  
  再添加一虚拟主机:
  
  ServerName lb.ridingonhorse.com
  ProxyVia On
  ProxyRequests On
  ProxyPreserveHost On
  
  Require all granted
  
  ProxyPass  /  balancer://tcsrvs/
        ProxyPa***everse / balancer://tcsrvs/
  
  Require all granted
  
  
  ########
  一些解释:
  ProxyVia On : 控制位于代理服务器链中的代理请求的流向
  Apache2.2的官方文档中的解释为:
   如果设置为默认值Off,将不会采取特殊的处理。
        如果一个请求或应答包含“Via:”头,将不进行任何修改而直接同通过。
  如果设置为Full,每个产生的“Via:”头中都会额外加入Apache服务器的版本,以“Via:”为注释出现。
  如果为On每个请求和应答都会对应前主机得到一个“Via:”头
  如果设置为Block ,每个代理请求中的所有“via:”头行将被删除。且不会产生新的“Via:”头。

  3)配置的梳理:
  代理到后端tomcat主机肯定需要代理模块以及定义代理模块
  所以首先定义后端主机服务器组
  在虚拟主机中引用,配置
  如果要实现回话粘贴:
  配置文件为:
  Header add Set-cookie "ROUTEID=%{BALANCER_WORKER_ROUTE}e;path=
  /"env=BALANCER_ROUTE_CHANGED
  

  
  BalancerMember http://172.18.34.1:8080 route=TomcatA loadfactor=1
  BalancerMember http://172.18.100.68:8080 route=TomcatB loadfactor=2
  ProxySet lbmethod=byrequests
  ProxySet stickysession=ROUTEID
  
  
  ServerName lb.ridingonhorse.com
  ProxyVia On
  ProxyRequests Off
  ProxyVia On
  proxypreservehost on
  
  Require all granted
  
  proxypass / balancer://tcsrvs/
  proxypassSeverse / balancer://tcsrvs/
  
  Require all granted
  
  
  ②使用ajp协议,由于ajp协议为二进制协议,所以,通信跟快捷。与以上只有很小的差异。
  

  

  
  
  
  





运维网声明 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-642403-1-1.html 上篇帖子: Linux 下安装JDK及Tomcat 下篇帖子: Cacti对Tomcat的监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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