Tomcat 7源码学习笔记 -5 web app自动reload

一个运行中的web app,如果修改了其中的一部分代码,然后更新了class文件或者其它文件,那么在不重新启动tomcat的情况下,如何让tomcat自动载入最新的代码呢?配置方式有几种:

假设web应用名为test,engine名为Catalina,host名为localhost

1.可以在test/META-INF目录下面放置一个context.xml文件,内容如下:

<Context reloadable="true"/>

2.也可以在conf/Catalina/localhost目录下放置一个test.xml文件,内容如下:

<Context reloadable="true"/>

3.如果想让localhost下的所有web应用都自动reload,那么可以在conf/Catalina/localhost目录下放置一个context.xml.default文件,内容如下:

<Context reloadable="true"/>

4.如果希望tomcat下的所有web应用都自动reload,还有一种方法。方法如下:

随便修改一下test/WEB-INF/web.xml文件,比如加个空行,然后保存,这样tomcat会自动监测到web.xml被修改了,然后就重新加载test应用。这个自动监测的配置属于tomcat的默认配置,配置信息如下:

conf/context.xml文件中

<WatchedResource>WEB-INF/web.xml</WatchedResource>

这个文件中的配置适用于所有的web应用,不过这种方法有些局限性,就是WatchedResource中只能指定一个具体的文件,不支持WEB-INF/*等模式匹配,所以无法做到监测整个web应用。

5.还可以修改server.xml文件,在<host>下面配置<Context>信息:

<Context path="/test" docBase="test" reloadable="true"/>

不过这种方法不建议使用,因为修改server.xml文件需要重启tomcat,而且不便于管理,因为server.xml里面的配置信息比较重要,所以最好把web应用自身的配置信息放在单独的文件中管理比较好。

相关推荐