不重启Tomcat有两种方式:热部署、热加载。
热部署:容器在运行时重新部署整个项目。
这类环境下,一般整个内存会被清空,重新加载。这类方式有可能造成sessin丢失等问题。tomcat 6以上已解决该问题。
热加载:最好是在调试过程中使用,以免整个项目加载。Debug模式支持热加载。
容器在运行时重新加载编译后的类。在这类环境下,内存不会被清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。一般转变类的布局和模型就会有异常,在已经有的变量和方法中转变是不会出问题的。
热加载配置如下:
在tomcat的server.xml中,
<Context docBase="my_cms" path="/my_cms" reloadable="true" debug="0" privileged="true" source="org.eclipse.jst.jee.server:my_cms"/>
path:指定访问该Web应用的URL入口。
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。