(4)嵌套组件
嵌套组件嵌套在容器内,为管理人员提供管理服务。它包括全局资源组件(The GlobalResources Component)、加载器组件(Loader Component)、日志组件(Logger Component)、管理器组件( Manager Component)、域组件(Realm Component)、资源组件(ResourcesComponent)和阀组件(Valve Component)。全局资源组件只能嵌套在Server组件中,用于配置Server中其他组件所用到的全局JNDI资源。加载器组件只能嵌套在上下文组件中,用于指定一个Web应用程序的类加载器,并将该应用程序的类和资源加载到内存中。一般来说,Tomcat中默认的类加载器就能满足大部分的需求,因此开发人员没有必要定制自己的类加载器。日志组件能借助Log4J来实现记录日志。管理器组件是会话管理器,负责会话的创建和维护。域组件是一个包含用户名、密码和用户角色的数据库。角色与UNIX的group类似。域的不同实现允许将Catalina集成到认证信息已经被创建和维护的环境中,然后利用这些信息来实现容器管理的安全性。在任何组件(如引擎、主机或者上下文组件)中都可以嵌套域组件。另外,引擎或者主机的域会自动被低层次的容器集成,除非被明确覆盖。资源组件只在上下文组件中支持,它代表的是Web应用程序中的静态资源,以及它们被允许存放的格式,例如压缩文件等。阀组件用于在请求到达目的之前,截取该请求,并处理它。有点类似于Servlet规范中定义的过滤器。它是Tomcat专有的、目前还不能用于其他的Servlet/JS容器。阀组件可以嵌入到其他组件中,如引擎、主机和上下文组件。阀组件通常用于记录请求、客户端IP地址,以及服务器端利用率信息,这种技术被称为请求转储( Request Dumping)。请求转储阀记录HTTP头的信息和Cookies信息。响应转储阀记录响应HTTP头和Cookies信息。阀是可重用的组件,能按照用户的需求增删。