Tomcat学习之Container
2016-07-25 08:44
525 查看
http://blog.csdn.net/aesop_wubo/article/details/7654895
容器主要负责处理来自客户端的请求,并把响应结果返回给客户端。前面提到一个Service是由一个容器和多个连接器组成的,接口org.apache.catalina.Container是对容器的抽象,来看看这个接口中都有哪些方法?
1、与容器层次结构有关的方法
[html] view
plain copy
print?
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、与后台处理有关的方法
[html] view
plain copy
print?
public int getBackgroundProcessorDelay();
public void setBackgroundProcessorDelay(int delay);
public void backgroundProcess();
delay是一个整形值,用于表示当前容器调用backgroundProcess及其子容器调用backgroundProcess的时间间隔,backgroundProcess方法主要做了以下事:
(1)检查WAR包有没有变化
(2)重新加载web应用
(3)清除已过期的session
(4)刷新缓冲区等
3、与组件有关的方法
[html] view
plain copy
print?
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的!
类图如下:
每个容器的具体细节后续介绍......
容器主要负责处理来自客户端的请求,并把响应结果返回给客户端。前面提到一个Service是由一个容器和多个连接器组成的,接口org.apache.catalina.Container是对容器的抽象,来看看这个接口中都有哪些方法?
1、与容器层次结构有关的方法
[html] view
plain copy
print?
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、与后台处理有关的方法
[html] view
plain copy
print?
public int getBackgroundProcessorDelay();
public void setBackgroundProcessorDelay(int delay);
public void backgroundProcess();
delay是一个整形值,用于表示当前容器调用backgroundProcess及其子容器调用backgroundProcess的时间间隔,backgroundProcess方法主要做了以下事:
(1)检查WAR包有没有变化
(2)重新加载web应用
(3)清除已过期的session
(4)刷新缓冲区等
3、与组件有关的方法
[html] view
plain copy
print?
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的!
类图如下:
每个容器的具体细节后续介绍......
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- i-jetty环境搭配与编译
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- Linux部署Tomcat服务器
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器