现在的位置: 首页 > 综合 > 正文

解决用tomcat作为web server时,应用被多次加载的问题

2019年06月19日 ⁄ 综合 ⁄ 共 1004字 ⁄ 字号 评论关闭


出现这种问题时,如果用到了spring及其他涉及到管理应用生命周期的组件时,要特别注意:周期性任务及单例模式的问题,这是个致命的灾难。

这类问题,通常都是在tomcat下配置了多个应用程序时发生

错误配置方式:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="/Volumes/Work/apache-tomcat-6.0.29/webapps/YourProjectName" debug="0" reloadable="true" />
</Host>

这种情况下在tomcat加载完成Host -> webapps目录下的应用后,找到Context ->docBase指定的应用,再次加载;

由于YourProjectName应用所在目录在webapps下,顾会使其多次加载;

ok ,现在我们了解了tomcat容器加载应用的基本过程后,问题就很容易解决了。


如:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="/Volumes/Work/YourProjectName" debug="0" reloadable="true" />
</Host>

再或:
为配合eclipse开发与调试,控制台移出到非webapps目录下

<Host name="localhost"  appBase="/Volumes/Work/apache-tomcat-6.0.29/t_root"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="/Volumes/Work/apache-tomcat-6.0.29/webapps/YourProjectName" debug="0" reloadable="true" />
</Host>

抱歉!评论已关闭.