出现这种问题时,如果用到了spring及其他涉及到管理应用生命周期的组件时,要特别注意:周期性任务及单例模式的问题,这是个致命的灾难。
这类问题,通常都是在tomcat下配置了多个应用程序时发生
原因分析:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/myProject" path="" reloadable="true"/>
</Host>
1.当为 Host 容器 设置了 appBase 属性时, Tomcat 会在启动时自动加载 appBase 指定目录下的所有合法工程;
2. 由于同时又通过 Context 的docBase 属性设置了Tomcat 默认工程, 所以,指定的myProject工程又会被加载一次
基于以上两点,造成了myProject工程的重复加载。
★★解决办法1:改变项目的部署路径
1. 新建一个目录专门用于存放工程, 如: D:/apache-tomcat-6.0.36/project
2. 将工程存放到以上目录下:即:D:/apache-tomcat-6.0.36/project/myProject
3. 在 Context 容器中设置 docBase 属性, 如:
<Context docBase="D:/apache-tomcat-6.0.36/project/myProject" path="" reloadable="true"/>
配置:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="D:/apache-tomcat-6.0.36/project/myProject" path="" reloadable="true"/>
</Host>
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余3页未读,立即下载