在Context元素中,可以指定Tomcat应监视的Web应用程序清单,如果其中任一条发生了变化,则Tomcat将重新加载该应用程序。
要完成这一任务,只要在Context元素中指定超过1个的WatchedResource就可以。假定Context元素的reloadable被设为true,则在其中一个Web应用程序发生变化时,Tomcat将重新加载它。
无论是否修改WEB-INF/web.xml文件,Tomcat默认都将重载一个可重新加载的Web应用程序,因为在Tomcat的conf/context.xml file文件中,web.xml文件被标记为一个WatchedResource。
但是,您也可以拓展这一行为,以包含监视Web应用程序文件的其他资源。示例如下:
<Host name="localhost" appBase="webapps" reloadable="true"
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="watchcat" reloadable="true">
<WatchedResource>WEB-INF/catnip.properties</WatchedResource>
<WatchedResource>WEB-INF/lib/log4j.xml</WatchedResource>
</Context>
</Host>
在前述代码中,WatchedResource元素中列示的文件路径名是一个相对路径,因为该Web应用程序是在Host的appBase目录(webapps目录)中部署的,且如果是那样的话,就可以指定相对路径了。
在上述例子中,该路径是相对于webapps/watchcat/的路径。因此,如果改变了webapps/watchcat/WEB-INF/catnip.properties文件,则Tomcat会重新加载Web应用程序。
对改变webapps/watchcat/WEB-INF/lib/log4j.xml和webapps/watchcat/WEB-INF/web.xml(默认监控Web.xml文件),也会进行同样的处理。
如果在Host的appBase目录中没有部署webapp,则必须为每个WatchedResource指定决定路径。