Tomcat 中的 Container
public interface Container extends Lifecycle {
public static final String ADD_CHILD_EVENT = "addChild";
public static final String ADD_VALVE_EVENT = "addValve";
public static final String REMOVE_CHILD_EVENT = "removeChild";
public static final String REMOVE_VALVE_EVENT = "removeValve";
public Log getLogger();
public String getLogName();
public ObjectName getObjectName();
public String getDomain();
public String getMBeanKeyProperties();
public Pipeline getPipeline();
public Cluster getCluster();
public void setCluster(Cluster cluster);
public int getBackgroundProcessorDelay();
public void setBackgroundProcessorDelay(int delay);
public String getName();
public void setName(String name);
public Container getParent();
public void setParent(Container container);
public ClassLoader getParentClassLoader();
public void setParentClassLoader(ClassLoader parent);
public Realm getRealm();
public void setRealm(Realm realm);
public void backgroundProcess();
public void addChild(Container child);
public void addContainerListener(ContainerListener listener);
public void addPropertyChangeListener(PropertyChangeListener listener);
public Container findChild(String name);
public Container[] findChildren();
public ContainerListener[] findContainerListeners();
public void removeChild(Container child);
public void removeContainerListener(ContainerListener listener);
public void removePropertyChangeListener(PropertyChangeListener listener);
public void fireContainerEvent(String type, Object data);
public void logAccess(Request request, Response response, long time,
boolean useDefault);
public AccessLog getAccessLog();
public int getStartStopThreads();
public void setStartStopThreads(int startStopThreads);
public File getCatalinaBase();
public File getCatalinaHome();
}
从 Container 的定义中可以看出
- Container 继承了 Lifecycle 接口
- Container 容器包含一个父容器 和 一组子容器
- Container 有一个 Pipeline 对象
- Pipeline 有一个 Realm 对象,安全方面的
- Container 的实现类是ContainerBase,ContainerBase 是一个抽象类,里面封装了一些基本的方法,比如设置父容器、添加子容器、设置容器名称、获取容器名称等等,这里就不展开讲了。