tomcat启动时,同一个项目被加载多次

今天再给其他人解决问题时遇到一个奇怪的问题:一个tomcat下部署了3个应用,但却被加载多次。平时1分钟内就都能够启动完毕,现在启动成功后却超过2分钟!究竟是什么原因导致的呢?

通过仔细检查日志,发现一个项目被启动了3次。也就是说,3个应用一共被启动了9次!继续查找原因。。。

经过网上资料的收集,终于发现问题所在:

      <host name="www.zous-windows.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <context path="" docBase="/xxx/projects/ROOT/"  reloadable="true"></context>
      </host>
        <host name="repos.zous-windows.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <context path="" docBase="/xxx/projects/nexus-2.5.0-04.war"  reloadable="true"></context>
      </host>

上面由于制定了docBase,又同时制定了appBase。所以会加载多次。
举一个例子,你的webapps下有5个项目,那么指定了appBase后,启动第一个域名“www.zous-windows.com”时,要加载一次webapps下的所有项目;当启动第二个项目“repos.zous-windows.com”时,又会加载一次所有项目。所以如果你的server.xml下配了N个域名,webapps下有M个项目,那么当这个tomcat启动时将会启动总共 M * N 个项目。

解决方法就很简单了,去掉webapps即可:

      <host name="www.zous-windows.com" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <context path="" docBase="/xxx/projects/ROOT/"  reloadable="true"></context>
      </host>

5 comments on “tomcat启动时,同一个项目被加载多次

  1. 天边的鱼

    原来是appBase的原因,以前没注意过,还真就出问题了。

Submit reply to (●'◡'●) Cancel reply

Allowed HTML tags: <a href="http://google.com">google</a> <strong>bold</strong> <em>emphasized</em> <code>code</code> <blockquote>
quote
</blockquote>