Tomcat Engine组件
来源:互联网 发布:2017年云计算系统集成 编辑:程序博客网 时间:2024/06/15 16:09
Tomcat Engine组件
Tomcat Engine组件是一个职责相当简单的组件,他的主要作用就是决定从Connecter过来的请求应该交给哪一个Host来处理。在本文中,我们将会简单介绍下Tomcat的Engine组件的功能,backgroundProcess()方法,以及和Engine组件相关的几个Valve。
一、Engine组件的主要功能
在之前的学习中,我们已经了解到,Tomcat的各个组件都是通过Pipeline连在一起的,而各个组件的功能都封装在了各个Pipeline的BaseValve中,对于Engine组件,它的BaseValve就是StandardEngineValve,我们看一下它的invoke方法,便可以了解它的功能了:
从上面的代码片段我们看到,StandardEngineValve只是从request中拿到Host,然后调用Host组件的Pipeline就完事了,所以Engine组件的功能基本上就是决定请求由哪一个Host来处理,功能相当简单。
二、BackgroundProcessorDelay
Engine组件的默认实现继承了ContainerBase类,这个类是所有的Tomcat组件的基类,它实现了Container接口,这个接口里面有一个很重要的方法:backgroundProcess,从它的名字来看就是做一个后台的处理。事实上,Tomcat的组件可以和一个线程相关联,这个线程会定时地去调backgroundProcess方法,这个方法可以用来实现应用的重新加载或者其他任何需要定时触发的功能。
在ContainerBase的start()方法中,调用了一个threadStart方法,这个方法就是起一个线程去定时的调用backgroundProcess方法:
至于backgroundProcess方法的调用间隔可以在server.xml中的各个组件配置中配置相应的backgroundProcessDelay来指定。
三、Engine组件中其他一些可用Valve
默认配置下,Engine组件只包含了一个BaseValve,也就是StandardEngineValve,当然,你也可以根据自己的需要来增加Valve,Tomcat本身已经提供了三个Valve供Engine组件使用,你可以在server.xml中配置它们来使用,下面就来介绍下这几个Valve的功能:
1. REQUEST DUMPER VALVE
这个Valve的作用就是将请求头信息和相应头信息通过log打印出来,当然,读者们可能已经想到,通过log将请求的详细信息打印出来必然会对性能产生影响,但是如果仅仅是用来追踪问题,配置上这个Valve还是有点作用的。
2. REQUEST FILTER VALVE
RequestFilterValve是用来请求的过滤的,通过配置allows和denies列表,可以允许一些请求的访问或阻止一些请求的访问,RequestFilterValve是一个抽象类,它有两个默认的实现类RemoteAddrValve和RemoteHostValve,这两个Valve分别可以根据请求ip地址和请求的host来过滤请求。当然,你也可以根据自己的需要来扩展RequestFilterValve,这里需要注意的一点是最好不要把业务相关的逻辑用RequestFilterValve来控制,这样势必会造成应用对Tomcat的依赖。
3. ACCESSLOGVALVE
AccessLogValve的作用是将请求的详细信息打印出来,注意,它和RequestDumperValve是不同的,RequestDumperValve打印的是请求头信息和相应头信息,而AcessLogValve的作用则更像Apache Httpd的cookieLog,通过配置一定的log格式,来将你需要的请求信息打印出来,具体的格式配置大家可以参考Tomcat的官方文档
- Tomcat Engine组件
- Tomcat Engine组件
- Tomcat Engine组件
- Tomcat学习之Engine
- Tomcat学习之Engine
- Custom Component, Unreal Engine里定制组件
- Tomcat + JSPWIKI: An user-extensible wiki-engine
- Apache Tomcat 6.0 Jasper 2 JSP Engine
- How Tomcat works之 Host and Engine
- tomcat(13)Host和Engine容器
- Tomcat源码阅读之Engine启动过程
- tomcat源码:Engine和Host容器
- Tomcat -- Realm组件
- Tomcat组件介绍
- Tomcat Connector组件
- Tomcat Host组件
- Tomcat Context组件
- Tomcat Wrapper组件
- rex-ray 0.7.0支持对接ceph/rbd
- AtomicInteger类的理解与使用
- android显示布局边界查看布局
- eclipse安装插件
- Android support formats and mediacodec
- Tomcat Engine组件
- vi大段拷贝和移动
- python判断文件夹是否存在,不存在即创建
- windows下面的Docker安装详细
- CODE[VS] 天梯 1214 线段覆盖
- FFmpeg水印和字幕同时一个命令搞定
- Hibernate正想工程生成oracle数据库表
- Tomcat Host组件
- Memcached, Redis, MongoDB区别