同个Tomcat下部署两个项目,一个可以另一个不可以,出现404
问题场景:
项目A在Tomcat下部署,一切正常,正常运行,正常访问页面。然后现在有一个项目B,进行B项目的模块开发。部署时候,A项目和B项目两个都放到Tomcat下去,运行Tomcat后,A项目依旧正常访问,B项目却出现404,怎么也访问不成功。
问题原因分析:
- 项目B自身,在没有A项目部署的时候,是否正常,如自身已经出现代码问题,先修改自身项目代码问题
- 若代码方面没出问题,但是依旧无法访问,那么找项目中配置的地方,看看是否正确,具体配置看具体的项目情况
- 若以上都正常时,将A项目和B项目一起部署出现了问题,两个中一个正常另一个无法访问,这可能原因是两个项目的默认webAppRootKey一致,有可能项目B是通过拷贝A项目而来的,在A项目基础上进行修改,开发的。
解决方案:
第一种和第二种情况,只能开发者自己去找项目中的问题了,第三种解决方法是在应用的web.xml文件中,配置不同的webAppRootKey,<param-value>值定义成不同的,保持在Tomcat下部署的那些项目有不同的webAppRootKey即可.
以下是参考配置的代码
<!-- 应用路径 -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root.name</param-value> <!-- 这里的值可以根据不同项目进行配置 -->
</context-param>
<!-- 项目根目录Listener -->
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>