问题描述
war包发布到tomcat中遇到报数据源相关的错误
运维人员操作过程
- 将war包放到tomcat下/webapps中
- 启动tomcat,tomcat自动解压war包
- 运维人员手动改展开后的目录中的context.xml
问题原因
tomcat查找应用的Context次序
tomcat6.x会依次按照如下五个位置查找Web应用的Context元素
- 到/conf/context.xml
- 到/conf/[enginename]/[hostName]/context.xml.default
- 到/conf/[engineName]/[hostName]/[contextpath].xml
- 到Web应用的/META-INF/context.xml
- 到/conf/server.xml
根本原因是当运行tomcat的时候已经在/conf/[engineName]/[hostName]/[contextpath].xml目录下生成了相关的context.xml
然后只是修改了web应用下对应的展开的解压包中的/META-INF/context.xml的对应的信息,
tomcat按照自己的规则在/conf/[engineName]/[hostName]/[contextpath].xml下已经找到了对应context.xml文件,
所以使得已经修改的展开目录中的context.xml文件已经无效 `
解决方案
- 清除所有的与该应用相关的信息
<CATALINA_HOME>
/conf/[engineName]/[hostName]/[contextpath].xml,webapps下的war包和解压后的文件夹- 打包前就改好META-INF/context.xml,然后在运行tomcat.