2.2 在Tomcat中的servlet.xml使用Context元素
我们想部署并且在重新部署一个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"
>
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