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

[经验分享] Tomcat Server的结构图

[复制链接]

尚未签到

发表于 2015-8-12 08:06:55 | 显示全部楼层 |阅读模式
DSC0000.jpg    
conf/server.xml目录结构:
  Java代码
  1. <Server>   
  2.     <Listener />   
  3.     <GlobaNamingResources>   
  4.     </GlobaNamingResources   
  5.     <Service>   
  6.         <Connector />   
  7.         <Engine>   
  8.             <Logger />   
  9.             <Realm />   
  10.                <host>   
  11.                    <Logger />   
  12.                    <Context />   
  13.                </host>   
  14.         </Engine>   
  15.     </Service>   
  16. </Server>  
  <Server>
  <Listener />
  <GlobaNamingResources>
  </GlobaNamingResources
  <Service>
  <Connector />
  <Engine>
  <Logger />
  <Realm />
  <host>
  <Logger />
  <Context />
  </host>
  </Engine>
  </Service>
  </Server>
  1.<Server>元素   
它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个或多个<Service>元素.并且它不能做为任何元素的子元素.     
DSC0001.jpg    
<Server port=&quot;8005&quot; shutdown=&quot;SHUTDOWN&quot; debug=&quot;0&quot;>   
1>className指定实现org.apache.catalina.Server接口的类.默认值为org.apache.catalina.core.StandardServer     
2>port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.     
3>shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置   
测试:   
telnet localhost 8005   
输入:SHUTDOWN     
结果:关闭tomcat     
DSC0002.jpg    
2. <Service>元素   
该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素   
DSC0003.jpg    
<Service name=&quot;Catalina&quot;>     
<Service name=&quot;Apache&quot;>     
第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求.     
第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求 .     
1>className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService     
2>name定义Service的名字   
3. <Connector>元素   
由Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果.     
DSC0004.jpg    
一个“Connector”(连接器)代表一个请求被接收和应答所需要的端点。每个连接器通过相关的“Container”(容器)处理请求。默认情况下,一个非SSL的HTTP/1.1的连接器被绑定在端口8080。你也可以通过根据后面的使用说明并取消第二个连接器入口的注释,在端口8443上建立一个SSL HTTP/1.1的连接器。   
默认情况下,当一个web应用程序调用请求时,DNS查询是可行的。这将对性能造成一些不利的影响,因此,你可以将“enableLookups”设置为“false”来关闭DNS查询。当DNS查询被关闭时,request.getRemoteHost()将返回包含远程客户IP地址的字符串。   
Coyote HTTP/1.1 Connector   
className:   
该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector     
port:   
在端口号8080处侦听来自客户browser的HTTP1.1请求.如果把8080改成80,则只要输入 http://localhost/即可   
protocol:   
设定Http协议,默认值为HTTP/1.1     
minSpareThreads:   
该Connector先创建5个线程等待客户请求,每个请求由一个线程负责   
maxSpareThread:   
设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200     
acceptCount:   
当现有线程已经达到最大数时,为客户请求排队.当队列中请求数超过设定值时,后来的请求返回Connection refused错误   
redirectport:   
当客户请求是https时,把该请求转发到端口8443去   
enableLookups:   
如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true     
connectionTimeout:   
定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间   
4.<Engine>元素   
每个Service元素只能有一个Engine元素.处理在同一个<Service>中所有<Connector>元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.     
DSC0005.jpg    
<Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot; debug=&quot;0&quot;>   
1>className     
指定实现Engine接口的类,默认值为StandardEngine     
2>defaultHost     
指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机   
3>name     
定义Engine的名字   
在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>     
5. <Host>元素   
它由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.     
DSC0006.jpg    
1> appBase :     
指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps. 它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理   
2> autoDeploy:     
如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用   
3> unpackWARs:     
如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件   
4> alias:     
指定主机别名,可以指定多个别名   
5> deployOnStartup:     
如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context     
6.<Context>元素   
它由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.一个<Host>可以包含多个<Context>元素.
  Java代码 DSC0007.gif DSC0008.gif DSC0009.gif
  1. <Host name=&quot;www.sohu.com&quot;
  2.         appBase=&quot;webapps&quot;
  3.         unpackWARs=&quot;true&quot;
  4.         autoDeploy=&quot;true&quot;
  5.         xmlValidation=&quot;false&quot;
  6.         xmlNamespaceAware=&quot;false&quot;>      
  7.
  8.     <Context path=&quot;&quot;
  9.              docBase=&quot;F:\myworkspace\app1\WebRoot&quot;
  10.              workDir=&quot;F:\myworkspace\app1\WebRoot\work&quot;
  11.              reloadable=&quot;true&quot;>      
  12.
  13.         <Resource name=&quot;jdbc/erp&quot;
  14.                   auth=&quot;Container&quot;
  15.                   type=&quot;javax.sql.DataSource&quot;
  16.                   maxActive=&quot;10000&quot;
  17.                   maxIdle=&quot;3000&quot;
  18.                   maxWait=&quot;10000&quot;
  19.                   username=&quot;root&quot;
  20.                   password=&quot;root&quot;
  21.                   driverClassName=&quot;com.mysql.jdbc.Driver&quot;
  22.                   url=&quot;jdbc:mysql://localhost:3306/app1?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;failOverReadOnly=false&quot;/>      
  23.     </Context>      
  24. </Host>   
  <Host name=&quot;www.sohu.com&quot;
  appBase=&quot;webapps&quot;
  unpackWARs=&quot;true&quot;
  autoDeploy=&quot;true&quot;
  xmlValidation=&quot;false&quot;
  xmlNamespaceAware=&quot;false&quot;>
  <Context path=&quot;&quot;
  docBase=&quot;F:\myworkspace\app1\WebRoot&quot;
  workDir=&quot;F:\myworkspace\app1\WebRoot\work&quot;
  reloadable=&quot;true&quot;>
  <Resource name=&quot;jdbc/erp&quot;
  auth=&quot;Container&quot;
  type=&quot;javax.sql.DataSource&quot;
  maxActive=&quot;10000&quot;
  maxIdle=&quot;3000&quot;
  maxWait=&quot;10000&quot;
  username=&quot;root&quot;
  password=&quot;root&quot;
  driverClassName=&quot;com.mysql.jdbc.Driver&quot;
  url=&quot;jdbc:mysql://localhost:3306/app1?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;failOverReadOnly=false&quot;/>
  </Context>
  </Host>
  1> path   
该Context的路径名是&quot;&quot;,故该Context是该Host的默认Context     
2> docBase :     
该Context的根目录   
3> reloadable:     
如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用   
4> useNaming:指定是否支持JNDI,默认值为了true     
5> cookies指定是否通过Cookies来支持Session,默认值为true     
Tomcat 的总体结构   
DSC00010.jpg    
Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“七寸”。

运维网声明 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-97648-1-1.html 上篇帖子: Linux 下配置和使用Tomcat 下篇帖子: 看《深入剖析tomcat》一书学习到的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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