Tomcat学习之Container
时间:2014-12-30 13:21 来源:linux.it.net.cn 作者:IT
容器主要负责处理来自客户端的请求,并把响应结果返回给客户端。前面提到一个Service是由一个容器和多个连接器组成的,接口org.apache.catalina.Container是对容器的抽象,来看看这个接口中都有哪些方法?
1、与容器层次结构有关的方法
-
public Container getParent();
-
public void setParent(Container container);
-
public ClassLoader getParentClassLoader();
-
public void setParentClassLoader(ClassLoader parent);
-
public void addChild(Container child);
-
public void removeChild(Container child);
-
public Container findChild(String name);
-
public Container[] findChildren();
可以为一个容器添加子容器,可以查找容器等。其中setParent和addChild方法要注意一点,如果两个容器不允许有父子关系,会抛出异常。
2、与后台处理有关的方法
-
public int getBackgroundProcessorDelay();
-
public void setBackgroundProcessorDelay(int delay);
-
public void backgroundProcess();
delay是一个整形值,用于表示当前容器调用backgroundProcess及其子容器调用backgroundProcess的时间间隔,backgroundProcess方法主要做了以下事:
(1)检查WAR包有没有变化
(2)重新加载web应用
(3)清除已过期的session
(4)刷新缓冲区等
3、与组件有关的方法
-
public Cluster getCluster();
-
public void setCluster(Cluster cluster);
-
public Pipeline getPipeline();
-
public Realm getRealm();
-
public void setRealm(Realm realm);
-
public DirContext getResources();
-
public void setResources(DirContext resources);
-
public Manager getManager();
-
public void setManager(Manager manager);
-
public Log getLogger();
-
public AccessLog getAccessLog();
容器可以选择性地添加一些组件,比如:日志、安全检查、集群、session管理等!
ContainerBase是Container抽象类实现,如果要继承ContainerBase需要实现getObjectNameKeyProperties方法,这个方法返回一个代表该容器的字符串,在注册容器的时候会用到。
Tomcat一共有四种类型的容器:
Engine:代表完整的Servlet引擎,是最顶层的容器,在这个容器上调用setParent会抛出异常。一个Engine由多个Host容器组成。
Host:代表一个虚拟主机,可以运行多个应用,它负责安装和展开这些应用,其子容器为Context。
Context:代表ServletContext,管理多个Servlet,理论上只要有Context就可以运行Servlet了,其子容器为Wrapper。
Wrapper:代表一个Servlet,是最底部的容器,它没有子容器。它负责管理一个Servlet,包含Servlet的装载、初始化、执行和卸载等。只有Wrapper也是可以运行Servlet的!
类图如下:

每个容器的具体细节后续介绍......
(责任编辑:IT)
容器主要负责处理来自客户端的请求,并把响应结果返回给客户端。前面提到一个Service是由一个容器和多个连接器组成的,接口org.apache.catalina.Container是对容器的抽象,来看看这个接口中都有哪些方法? 1、与容器层次结构有关的方法
可以为一个容器添加子容器,可以查找容器等。其中setParent和addChild方法要注意一点,如果两个容器不允许有父子关系,会抛出异常。 2、与后台处理有关的方法
(1)检查WAR包有没有变化 (2)重新加载web应用 (3)清除已过期的session (4)刷新缓冲区等 3、与组件有关的方法
ContainerBase是Container抽象类实现,如果要继承ContainerBase需要实现getObjectNameKeyProperties方法,这个方法返回一个代表该容器的字符串,在注册容器的时候会用到。 Tomcat一共有四种类型的容器: Engine:代表完整的Servlet引擎,是最顶层的容器,在这个容器上调用setParent会抛出异常。一个Engine由多个Host容器组成。 Host:代表一个虚拟主机,可以运行多个应用,它负责安装和展开这些应用,其子容器为Context。 Context:代表ServletContext,管理多个Servlet,理论上只要有Context就可以运行Servlet了,其子容器为Wrapper。 Wrapper:代表一个Servlet,是最底部的容器,它没有子容器。它负责管理一个Servlet,包含Servlet的装载、初始化、执行和卸载等。只有Wrapper也是可以运行Servlet的! 类图如下:
每个容器的具体细节后续介绍...... |