•reloadable:是否监控/WEB-INF/class和/WEB-INF/lib两个目录中文件的变化,变化时将自动重载。在测试环境下该属性很好,但在真实生产环境部署应用时不应该设置该属性,因为监控会大幅增加负载,因此该属性的默认值为false。
•wrapperClass:实现wrapper容器的类,wrapper用于管理该context中的servlet,该类必须实现org.apache.catalina.Wrapper接口,如果不指定该属性则采用默认的标准类。
•xmlNamespaceAware:和web.xml的解析方式有关。默认为true,设置为false可以提升性能。
•xmlValidation:和web.xml的解析方式有关。默认为true,设置为false可以提升性能。
4.8 被嵌套类realm
realm定义的是一个安全上下文,就像是以哪种方式存储认证时的用户和组相关的数据库。有多种方式可以实现数据存放:
•JAASRealm:基于Java Authintication and Authorization Service实现用户认证;
•JDBCRealm:通过JDBC访问某关系型数据库表实现用户认证;
•JNDIRealm:基于JNDI使用目录服务实现认证信息的获取;
•MemoryRealm:查找tomcat-user.xml文件实现用户信息的获取;
•UserDatabaseRealm:基于UserDatabase文件(通常是tomcat-user.xml)实现用户认证,它实现是一个完全可更新和持久有效的MemoryRealm,因此能够跟标准的MemoryRealm兼容;它通过JNDI实现;
下面是一个常见的使用UserDatabase的配置:
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
下面是一个使用JDBC方式获取用户认证信息的配置:
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/authority" connectionName="test" connectionPassword="test" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" />
4.9 被嵌套类valve
Valve中文意思是阀门,类似于过滤器,它可以工作于Engine和Host/Context之间、Host和Context之间以及Context和Web应用程序的某资源之间。一个容器内可以建立多个Valve,而且Valve定义的次序也决定了它们生效的次序。
有多种不同的Valve:
•AccessLogValve:访问日志Valve;
•ExtendedAccessValve:扩展功能的访问日志Valve;
•JDBCAccessLogValve:通过JDBC将访问日志信息发送到数据库中;
•RequestDumperValve:请求转储Valve;
•RemoteAddrValve:基于远程地址的访问控制;
•RemoteHostValve:基于远程主机名称的访问控制;
•SemaphoreValve:用于控制Tomcat主机上任何容器上的并发访问数量;
•JvmRouteBinderValve:在配置多个Tomcat为以Apache通过mod_proxy或mod_jk作为前端的集群架构中,当期望停止某节点时,可以通过此Valve将用记请求定向至备用节点;使用此Valve,必须使用JvmRouteSessionIDBinderListener;









