我们想部署并且在重新部署一个servlet 到Tomcat 中时,并且不用重启Tomcat那该怎么做呢?
这样我们可以在servlet.xml中用作为一个Context元素来部署Servlet
你可以复制一个重新编译过的Servlet类来覆盖一个已经存在的Servlet类 并且调用这个Servlet 从而达到不用重启Tomcat的效果。
配置一个 Context 元素到 <tomcat-installation-directory>/conf/server.xml 文件中去。 Context 元素必须嵌套到 Host 元素中去,这个 Host 元素代表在你的 Web 应用运行下的虚拟主机 。 在你的Context元素中配置 reloadble 属性 为true。这个标记通知Tomcat去监视在WEB-INF/classes 和 WEB-INF/lib目录下内容是否有任何的变化。如果Tomcat发现其中的变化,Tomcat将自动的重新载入这个web 应用。这个Context 元素 在server.xml 如下:
< Context className ="org.apache.catalina.core.StandardContext" crossContext ="false" reloadable ="true" mapperClass ="org.apache.catalina.core.StandardContextMapper" useNaming ="true" debug ="0" swallowOutput ="false" privileged ="false" displayName ="Home Web App" wrapperClass ="org.apache.catalina.core.StandardWrapper" //配置虚拟目录 docBase ="h:home" cookies ="true" path ="/home" cachingAllowed ="true" charsetMapperClass ="org.apache.catalina.util.CharsetMapper" >
这个path属性描绘了一个应用的上下文路径。这个docBase属性指向这个Web 应用的最高目录(根目录)
在这个配置之下如果复制一个新的Servlet倒以前存在的Servlet 之上那么在Tomcat5.x中将会向后台控制台输出一个信息。来响应动态的Servlet的重载。
如下:
WebappClassLoader: Resource '/WEB-INF/classes/com/mydev/OracleTest. class' was modified; Date is now: Sun Feb 02 22:17:41 EST 2007 Was: Sun Feb 02 21:38:52 EST 2007