实现
container←-----containerBase
↑ ↑
|继承 |继承
| |
| 实现 |
Engine←-----—-- StandardEngine
context Standardcontext
host Standardhost
wrapper Standardwrapper
四种container分别是Engine,context,host和wrapper。
containerBase是对container相同部分的实现,四个interface又继承了container,增加了不同的部分。
如此StandardEngine,Standardcontext,Standardhost和Standardwrapper继承了相同的部分,同时实现了差异性的部分。
Engine:An Engine is a Container that represents the entire Catalina servlet engine.
Host:A Host is a Container that represents a virtual host in the Catalina servlet engine.
Context:A Context is a Container that represents a servlet context, and therefore an individual web application, in the Catalina servlet engine.
Wrapper: A Wrapper is a Container that represents an individual servlet definition from the deployment descriptor of the web application.
补充:写了一个简单的servlet,然后跟踪下发现如下
Engine=StandardEngine[Catalina]
host=StandardEngine[Catalina].StandardHost[localhost]
context=StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WelcomeServlet]
wrapper=StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WelcomeServlet].StandardWrapper[com.hotnosh.ServletTest.FirstServlet]
可以看出:
host实际是虚拟主机
context是webapplication,发布的web应用的根目录名
wrapper是具体处理servlet的
如此我在浏览器上输入http://localhost:8080/WelcomeServlet/FisrtServlet
GET /WelcomeServlet/FisrtServlet HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
ThreadID: 4936
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SE 2.X; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X)
Host: localhost:8080
Connection: Keep-Alive
向tomcat发出http的request,tomcat解析请求后,一步步直到具体的servlet处理函数。
调用栈:
Http11Processor.process(SocketWrapper<Socket> socketWrapper)
adapter.service(request, response);
connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);
//调用StandardEngine的StandardEngineValve.invoke
host.getPipeline().getFirst().invoke(request, response);
//调用StandardHost的StandardHostValve.invoke
context.getPipeline().getFirst().invoke(request, response);
//调用Standardcontext的StandardcontextValve.invoke
wrapper.getPipeline().getFirst().invoke(request, response);
//调用StandardWrapper的StandardWrapperValve.invoke
Http11Processor.process(SocketWrapper<Socket> socketWrapper)
adapter.service(request, response);
connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);
//调用StandardEngine的StandardEngineValve.invoke
host.getPipeline().getFirst().invoke(request, response);
//调用StandardHost的StandardHostValve.invoke
context.getPipeline().getFirst().invoke(request, response);
//调用Standardcontext的StandardcontextValve.invoke
wrapper.getPipeline().getFirst().invoke(request, response);
//调用StandardWrapper的StandardWrapperValve.invoke
分享到:
相关推荐
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
修改版tomcat7-maven-plugin-2.2.jar
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-...
tomcat7-maven-plugin-2.1.jar
tomcat9负载均衡tomcat-cluster-redis-session-manager_4.0
apache-tomcat-8.5.20.tar.gz源码包和context.xml文件,这套配置是我自己亲测可用的。。另外我用的redis4这个版本。注意:如果你使用的TOMCAT其他版本。例如tomcat6或者7这套JAR包可能不可用,tomcat8.0没有测试。...
tomcat6-dta-ssl-1.0.0.jar 此类文件将有助于tomcat支持ssl协议
tomcat-redis-session-manager源码
Tomcat8亲测可用 tomcat-redis-session-manager的jar包 修改了tomcat-redis-session-manager源码进行的编译生成的jar包
Maven使用tomcat8-maven-plugin插件
文件名写错了,此压缩文件支持tomcat8.5。是否支持8.0请自行测试,本人只测试了8.5,可以使用。压缩文件包括tomcat-redis-session-manager-...apache-tomcat-8.5.33.tar.gz,nginx-1.6.2.tar.gz也打包进去,一步到位。
tomcat-redis-session-manager-1.2-tomcat-7.jar 和tomcat的context.xml配置文件。 2.7.2版包含 commons-pool2-2.4.1.jar jedis-2.7.2.jar tomcat-redis-session.jar 和tomcat的context.xml配置文件
Tomcat7---Linux版本apache-tomcat-7.0.82.tar.gz 亲测可用。
NULL 博文链接:https://smartvessel.iteye.com/blog/716492
因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。
用于配置 tomcat-redis-session-manager
基于tomcat-redis-session-manager源码进行的编译生成的jar包,压缩包中包含Tomcat7和Tomcat8打好的jar包。