阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 3282|回复: 0

[其它] Tomcat 之图文解析 Server.xml 配置

[复制链接]

4208

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
126153
QQ
发表于 2017-10-23 22:07:29 | 显示全部楼层 |阅读模式
本文即将介绍的是Server.xml - Tomcat的主配置文件。该文件存放在安装目录下的conf文件夹中。为了让大家有个直观的认识,在此将Tomcat7的默认配置摘录如下:
  1. <?xml version='1.0' encoding='utf-8'?>

  2. <Server port="8005" shutdown="SHUTDOWN">

  3.   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  4.   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  5.   <Listener className="org.apache.catalina.core.JasperListener" />
  6.   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  7.   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  8.   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  9.   <GlobalNamingResources>
  10.     <Resource name="UserDatabase" auth="Container"
  11.               type="org.apache.catalina.UserDatabase"
  12.               description="User database that can be updated and saved"
  13.               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  14.               pathname="conf/tomcat-users.xml" />
  15.   </GlobalNamingResources>

  16.   <Service name="Catalina">

  17.     <Connector port="8080" protocol="HTTP/1.1"
  18.                connectionTimeout="20000"
  19.                redirectPort="8443" />
  20.     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  21.     <Engine name="Catalina" defaultHost="localhost">

  22. <Realm className="org.apache.catalina.realm.LockOutRealm">
  23.         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  24.                resourceName="UserDatabase"/>
  25.      </Realm>

  26.      <Host name="localhost"  appBase="webapps"
  27.             unpackWARs="true" autoDeploy="true">

  28. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  29.                prefix="localhost_access_log." suffix=".txt"
  30.                pattern="%h %l %u %t "%r" %s %b" />
  31.       </Host>
  32.     </Engine>
  33.   </Service>
  34. </Server>
复制代码


去掉元素属性,稍加整理,配置文件就变成了下面这样:

  1. <Server> <!-- 顶级元素 -->
  2.   <Listener/> <!-- 组件 -->
  3.   <GlobalNamingResources/> <!-- 组件 -->
  4.   <Service> <!-- 另一个顶级元素 -->
  5.     <Connector/> <!-- 接头 -->
  6.     <Engine> <!-- 容器 -->
  7.       <Realm/> <!-- 组件 -->
  8.       <Host> <!-- 容器 -->
  9.         <Valve/> <!-- 组件 -->
  10.           <Context></Context> <!-- 容器 -->
  11.       </Host>
  12.     </Engine>
  13.   </Service>
  14. </Server>
复制代码
根据Tomcat自身的分类,上面这些元素可以分成四种:

顶级元素 - 即Server和Service,前者是本配置文件的根节点,后者则起到了一个包裹内部组件的作用。换句话说,它们都属于“单纯的、不具有具体职能的配置节点”。

容器 - Tomcat内真正负责处理请求并返回结果的组件。

Connector - Connector(接头)是一个特殊的组件,如果说整个Tomcat是一堵墙,它就是安装在墙上的插座。外部的客户端通过这些插座来跟Tomcat建立联系。

嵌套组件 - 这是一些嵌套在各种容器内部的组件,有些可以放在任意一层容器内,例如Listener;有些只能放在固定的位置,例如GlobalNamingResources。

下面将选择性地介绍这些元素。

顶级元素

Server
一个Tomcat只有一个Server.xml,即一个Tomcat实例只有一个Server。从实现来看,作为Server.xml的根节点,它不是一个容器,它只是单纯地扮演着一个包裹的角色。从命名来看,它又可以是整个Tomcat所有容器和作用于所用容器的组件的混合体。在此,我们把它当做是Tomcat实例本身。

单机Tomcat实例个数
大部分情况下我们在一台服务器/云服务器上只跑一个tomcat,但也有两种特例

一是为了测试,在一台机器上跑多个Tomcat,用以模拟多台服务器多个应用交互的效果。

二是通过nginx+多个tomcat组成负载均衡集群,以达到以下目的:


1、在32位系统上,由于寻址空间、内核预留内存等我们不太需要关心的机制,单个进程可以使用的内存上限大概是1.5G~2G(windows)和2G~3G(linux)。因此,大内存服务器上如果要充分利用内存就只能多开Tomcat。理论上64位系统没有这个问题。但由于内存指针膨胀和数据类型对齐补白等同样不太需要关心的机制,运行在64位系统上的JVM需要消耗更多的内存(《深入理解Java虚拟机》),因此,多数应用还是采用在32位系统上部署虚拟集群的方式。

2、配置太大的内存可能会降低JVM进行垃圾回收的频率,也就意味着每一次垃圾回收都是一个耗时日久的大工程,甚至可能导致宕机。一般建议单个JVM最大内存不超过1.5G。

3、从稳定性上考虑,个别tomcat挂了也不会导致服务下线。


5659659edf74140952.png

★ Server元素属性
  1. <Server port="8005" shutdown="SHUTDOWN" />
复制代码
Server可配置的属性很少。根据上面摘录的默认配置,Server会侦听localhost的TCP端口8005,当该端口接收到字符串"SHUTDOWN"时,即执行关闭Tomcat操作。

★ Server 的嵌套组件
Server有两种特有的组件,一个是GlobalNamingResources(全局命名资源),一个是Service(服务)。除此之外,还可以有Listener(监听器)这种可以作用于不同层次容器的组件。Server默认配置了六种Listener,其作用会在后面介绍。配置在Server这一层的Listener对所有容器起作用。

1556759edf75abc6ff.png


Service
Service是另一个混合体。一个Service就是一个完整的服务,负责将若干个Connector和一个Engine(引擎)包裹在一起。除此之外,Service还可以配置一个Executor(共享线程池)用于管理所有Connector的线程数量。

★ service元素属性

  1. <Service name="Catalina">...</Service>
复制代码
Service的属性比Server更少,一般只用到了name这个属性。默认配置定义了一个名为“Catalina”的 Service。什么是Catalina呢?Cataline是一个太平洋小岛的名字,而Tomcat开发团队的一个核心人员Craig McClanahan喜欢这个小岛,所以...

★ Service 的嵌套组件
如图所示,Service有Executor、Connector和Engine三种组件。其中,每个Connector负责侦听一个TCP端口,接收相应的请求,并转发给绑定的Engine处理。Engine处理完后,通过Connector把结果返回给客户端。在配置了Executor的情况下,所有Connector的线程受Executor统一管理。

1048159edf77873428.png



更多介绍,阅读原文:

  1. https://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&mid=2650070777&idx=3&sn=a56a311fc33f585604c9b13eff8f832e&chksm=bedb059789ac8c811720947a85b720497cc7ded7597c20c606343d4d1f93c740dac4ae951c15&mpshare=1&scene=23&srcid=04026yYFRVxrnUrhVlu2eNsz#rd
复制代码



捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

相关帖子

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-4-20 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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