用过tomcat或者weblogic的人都知道,只要将一个可以运行的webapp(带有"WEB-INF/web.xml)的文件夹放在它们指定的目录下(tomcat:webapps,weblogic:DafaultWebApps),就能在浏览器中访问到它们。
在tomcat中的webapps下可以放多个目录,如果conf/server.xml或conf/Catalina/localhost没有任何配置的话,默认的webroot就是文件夹名称。然而这个方便之处对于我来讲却造成了不便的地方。因为我的项目多,在webapps下有四个文件夹,所以不管我有没有销掉locahost下的xml文件(我的server.xml没有任何的<context>),每次启动tomcat的时候它都要加载四个应用,那个慢劲真的很难以忍受。自己难受倒还可以忽悠过去,更麻烦的是,其中一个项目的客户今儿突然又要去掉他的webroot。
客户第一,接下来就改勒。我发现无论是修改localhost/ewssms.xml的<Context path="">,还是去掉这个文件换成在server.xml中增加一个context=""的节点,tomcat5除了按照空的webRoot运行了一遍ewssms/web.xml外(正常),还按照"/ewssms"这样的webRoot走了一遍。瞎蒙一下,试着修改server.xml
“<Host name="localhost" debug="0"
appBase="webapps" unpackWARs="true" //将webapps改为webapps1,结果发现locahost下即使有配置文件,也不会去运行
autoDeploy="false" //原以为是true导致的,结果现在为false也是同样
xmlValidation="false" xmlNamespaceAware="false">”
所以猜想可能是tomcat写死了这些吧(一定会是webapps才能运行locahost/ewssms.xml;也一定会把下面的文件夹当作一个webapp)?
只能使出最后一招了。将webapps下所有的应用Cut到一个新文件夹中applications,修改ewssms.xml “<context docBase="../applications/ewssms">”,搞定!这样,我可以通过注销localhost下文件来轻松的控制启动哪些webapp了,笑死。