`
- 浏览:
113832 次
- 性别:
- 来自:
苏州
-
1)Container
container用于处理对servlet的请求,并未客户端填充resposne对象。container由org.apache.catalina.Container接口表示。共有四种类型的container:engine,host,context和wrapper。
container必须实现org.apache.catalina.Container接口。然后将container实例设置到connector的setContainer方法中。这样,connector就可以调用container的invoke方法了。
首先要注意的是,在tomcat中,共有四种类型的container,分别由不同的概念层次:
engine:表示tomcat的整个servlet引擎;
host:表示包含有一个或多个context的虚拟机;
context:表示一个web应用。一个context中可以有多个wrapper;
wrapper:表示一个独立的servlet。
container中可以包含一些支持的组件,如Loader,logger,Manger,Realm和Resources等,提供了getter和setter方法进行访问。
如果对servlet的过滤器有所了解的话,就不难理解pipeline和valve是如何工作的。pipeline就像是filter链,每个valve就像是一个过滤器。实际上,valve与过滤器类似,它可以控制传递给它的request和response对象。当一个valve处理结束后,它就调用pipeline中的下一个valve进行处理。basic valve总是最后被调用的。
container中有一个pipeline。当调用了container的invoke方法后,container将处理过程交给它的pipeline,而pipeline会 调用它的第一个valve,valve执行完后会调用后续的valve,知道所有的valve都调用结束。
2) Context
本节的程序展示了如何使用context和wrapper。在程序中是了一个mapper(一个组件)来帮助context选择某个wrapper来处理特殊的请求。
container中可以包含有多个mapper来支持不同的请求协议。例如,一个mapper处理HTTP协议请求,另一个mapper处理HTTPS协议的请求。org.apache.catalina.Mapper接口定义如下所示:
package org.apache.catalina;
public interface Mapper {
public Container getContainer();
public void setContainer(Container container);
public String getProtocol();
public void setProtocol(String protocol);
public Container map(Request request, boolean update);
}
其中setProtocol和getProtocol指明了该mapper负责处理哪种协议,map方法返回使用哪个子container处理特殊的请求。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
2. 检查JDBC驱动是否已经添加到Tomcat的`lib`目录或项目的类路径中。 3. 确认数据库中的表结构、数据与应用程序的预期一致。 4. 如果项目使用了连接池(如c3p0、HikariCP等),检查连接池配置是否正确。 **问题二:...
在服务集成方面,Tomcat可以与其他Java EE组件如EJB、JMS等协同工作,也可以作为Web服务(WS)的宿主,通过Axis2等工具实现SOAP或RESTful接口。 最后,持续学习和实践是掌握Tomcat的关键。在学习过程中,遇到问题时...
【标题】:“Tomcat学习资料1”所涵盖的知识点包括了Tomcat服务器的使用、配置以及Web项目的部署。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,是一款开源的Java Servlet容器,广泛用于搭建Java Web...
2. **容器概念**:Tomcat中的Container接口及其实现,如Engine、Host、Context和Wrapper,它们如何组织和管理Web应用。 3. **请求处理**:Coyote Adapter如何将网络I/O事件转换为Servlet请求,以及请求对象(Request...
【标题】:“Tomcat官网版本Tomcat+Java学习资源”是一个综合的学习资料包,主要针对的是Java开发中的关键工具——Apache Tomcat服务器以及相关的Java技术。Apache Tomcat是一款开源的Servlet容器,它实现了Java ...
总之,学习Tomcat源码不仅能够提升你对Web服务器底层工作的理解,还能够提高你在Java Web开发中的问题排查能力,让你成为一名更出色的开发者。通过阅读《How Tomcat Works》并结合实际项目实践,你将能够逐步揭开...
Tomcat是Apache软件基金会下的一个开源项目,是一个广泛使用的Java Servlet容器,特别因为其轻量级、高效能和稳定性而闻名。它实现了Java Servlet和JavaServer Pages(JSP)规范,使得开发者能够用Java语言来编写...
2. **容器理解**:Tomcat的核心是Catalina,它是实现Servlet容器的主要部分。Catalina通过生命周期管理类加载器、请求处理和会话管理。深入理解`org.apache.catalina`包下的类,特别是`Engine`、`Host`、`Context`和...
【标题】"Tomcat学习资料整理(不断更新)"揭示了这个压缩包文件是关于Tomcat服务器的深入学习资源,特别是关注其源码和使用的工具。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它是一个开源的、免费的...
2. 在Eclipse中,通过"Window" -> "Preferences" -> "Server" -> "Runtime Environments" 添加Tomcat实例,指定Tomcat的安装路径。 3. 配置服务器运行时环境,设置JRE版本和服务器端口等。 4. 创建或导入Web项目,将...
2. **Tomcat的启动与停止** - 使用`startup.bat`(Windows)或`./catalina.sh start`(Linux/Unix)启动Tomcat。 - 使用`shutdown.bat`(Windows)或`./catalina.sh stop`(Linux/Unix)关闭Tomcat。 - 监控...
2. **生命周期管理**:Tomcat中的每个组件都有其特定的生命周期,包括初始化、启动、暂停、恢复、停止和销毁。了解这些状态转换有助于理解服务的启动和关闭过程。 3. **容器概念**:在Tomcat中,容器是一个可以包含...
tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...
2. Java EE支持:Tomcat 7支持Servlet 3.0、JSP 2.2、EL 2.2和WebSocket 1.0等规范,使得开发者能够利用新的特性进行Web应用开发。 3. NIO(非阻塞I/O)改进:Tomcat 7增强了NIO连接器,提高了服务器处理并发请求的...
2. Tomcat 5.0 主要组件 - Catalina:符合Servlet API 2.3规范的Servlet容器。 - Jasper:符合JSP 1.2规范的JSP编译器和执行环境。 - Webapps:包含示例web应用、测试程序和相关文档。 3. 应用服务器与Tomcat的...
2. **Tomcat工作原理** Tomcat基于Coyote和Apr(Apache Portable Runtime)处理HTTP请求。Coyote是Tomcat的HTTP引擎,负责接收和响应网络请求。Apr则提供了一种高性能的本地接口,提高了网络通信效率。理解Tomcat的...
### Tomcat学习资料知识点梳理 #### 一、Tomcat简介 **Tomcat** 是一个开源的轻量级Web应用服务器,适用于中小型系统和并发访问用户不是很多的场合。它由Apache Software Foundation(ASF)的Jakarta项目开发,因...
Apache Tomcat是一款广泛使用的开源Servlet容器,它实现了Java Servlet和JavaServer Pages (JSP)技术,并在...通过本课程的学习,可以提升他们对于Tomcat服务器的管理和应用能力,有效地应对实际工作中的各种挑战。
2. **软件安装与管理**:在Linux上安装和管理Tomcat涉及命令行操作,包括下载、解压、配置环境变量、启动和停止服务。熟悉`tar`命令用于解压`.tar.gz`文件,`systemctl`或`service`管理服务的启动、停止和状态检查。...