最近公司做了新项目,要部署在公司网站服务器上。在修改tomcat配置文件server.xml的时候,发现新项目会重复加载多遍。由于新项目初始化数据时间较长,这样会浪费很多不必要的时间。
为了解决这个问题,搜了很多文章,都说是因为tomcat加载完成Host -> webapps目录下的应用后,找到Context ->docBase指定的应用,再次加载,最终导致重复加载项目。但尝试了像什么去掉host中的appBase属性之类的方法,都没有起效。
最后终于找到解决办法:项目所在目录不能与appBase指定路径(默认webapps)相同。
重复加载问题代码:
<Host name="www.zhkx.com.cn" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context docBase="zhkx" path="" reloadable="false" />
</Host>
修改后代码:
<Host name="www.zhkx.com.cn" appBase="webapps" unpackWARs="true" autoDeploy="false">
<Context docBase="E:/apache-tomcat-6.0.39-windows-x64/newwebapps/zhkx" path="" debug="0" reloadable="false" />
</Host>
然后,这是所有绑定域名部分的配置:
<Host name="www.zhkx.com.cn" unpackWARs="true" autoDeploy="false">
<Context docBase="E:/apache-tomcat-6.0.39-windows-x64/newwebapps/zhkx" path="" debug="0" reloadable="false" />
<Context docBase="E:/apache-tomcat-6.0.39-windows-x64/newwebapps/CTMS" path="/CTMS" debug="0" reloadable="false" />
<Context docBase="E:/apache-tomcat-6.0.39-windows-x64/newwebapps/dacs" path="/dacs" debug="0" reloadable="false" />
</Host>
<Host name="www.commasiatech.com" unpackWARs="true" autoDeploy="false">
<Context docBase="E:/apache-tomcat-6.0.39-windows-x64/newwebapps/website" path="" debug="0" reloadable="false" />
</Host>
<Host name="www.fanliba.com" unpackWARs="true" autoDeploy="false">
<Context docBase="E:/apache-tomcat-6.0.39-windows-x64/newwebapps/website1" path="" debug="0" reloadable="false" />
</Host>
到这里tomcat配置多域名多项目基本完成。
最后要说的是,大家遇到问题,不要盲目地去尝试网上的答案,一定要知其然,更要知其所以然。只要找到问题症结,自己多思考多尝试,然后得到自己的答案,虽然不一定是最优解,但这样解决的问题会令自己更深刻,更加融会贯通。