tomcat部署应用时设置context path为空的上下文路径问题

在server.xml中添加<Context>元素,配置以下:web

<Context docBase="app" path="" reloadable="false" />

在<Context>配置中包含以下信息:
1. 配置docBase值为:docBase="app"或者docBase="app.war";
2. path为空,表示app为tomcat默认应用;
同时,将app.war部署在CATALINA_HOME/webapps/路径下。tomcat


1.若是在部署app时删除了CATALINA_HOME/webapps/路径下的ROOT目录(即删除tomcat默认应用),
那么在tomcat启动时,会首先在CATALINA_HOME/webapps/路径下建立名称为ROOT的目录,而后将文件app.war中的内容拷贝到ROOT目录下,开始部署ROOT应用程序。
接下来才会解压app.war,再部署app应用。
从tomcat的启动日志能够很容易知道,在这种状况下app应用会被加载2次,一次是部署ROOT时加载的,另外一次是部署app自己加载的。
所以,访问应用能够带应用上下文路径,也能够不用带上下文路径,即:http://host:port/xxx或者http://host:port/app/xxx。app


2.若是在部署app时不删除CATALINA_HOME/webapps/路径下的ROOT目录,即已经存在默认应用程序。
此时在tomcat启动时,会先部署ROOT默认应用(注意:已经存在ROOT应用,再也不会拷贝app.war文件内容到ROOT下)。而后解压app.war,部署app应用。显然,app应用只被部署一次!
所以,在这种状况下,即使配置了<Context>元素的path为空,可是访问app应用时仍是必须携带应用上下文路径,即:http://host:port/app/xxx。webapp


实际上,tomcat部署应用程序的顺序是这样的(tomcat启动日志):
1.最早部署CATALINA_HOME/webapps/路径下的ROOT应用,该应用为tomcat的默认应用程序,访问时不用带应用上下文路径,即:http://host:port/xxx。
2.而后再按照字母顺序升序依次部署其余应用程序,如:appA,appB等等。spa


【参考】
http://stackoverflow.com/questions/7276989/how-to-set-the-context-path-of-a-web-application-in-tomcat-7-0 How to set the context path of a web application in Tomcat 7.0日志

相关文章
相关标签/搜索