我在tomcat中部署了一个Spring MVC 4应用程序。它工作正常。我必须克隆这个应用程序,以使几个应用程序具有相同的行为但不同的配置:数据库实例和文件管理文件夹。每个针对不同的客户。当我将原始应用程序部署到Linux Tomcat时,它可以正常工作(https://hostname:8443/app1)。
然后我更改数据库连接设置(数据库名称,用户名和文件夹以管理一些生成的文件),并将人工制品的名称更改为customername。但是当我进入应用程序时,它会显示正确的登录页面,但是当登录到应用程序时,我收到以下错误:
Status HTTP 500 - Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: java.io.IOException: JSPException including path '/WEB-INF/layout/header.jsp'
javax.servlet.ServletException: File [/WEB-INF/layout/header.jsp] not found
访问https://hostname:8443/customername时,它是图块模板的一部分。文件存在于已部署的应用程序中,它能够到达登录页面,因此似乎解析了tile配置,但我不知道为什么无法访问jsp文件。它在没有安全Tomcat(端口8080)的本地窗口中工作正常。
EDITED
如果我将customername.war的名称更改为app1.war,它的工作正常。有人知道war文件在哪里引用基础应用程序app1?似乎在某个地方有一个对app1的引用,如果我更改了应用程序名称(工件ID),它就不会引用customername路径。
似乎这是一个上下文根问题。我在STS(项目>属性> Web项目设置>上下文根)中更改了它,部署在Tomcat上但仍然无效。假设只有更改war文件名,应该更新应用程序的上下文根,但它不起作用。
答案 0 :(得分:0)
将Tomcat从8.0升级到8.5.5解决了这个问题。我不知道为什么,但是在8.0中存在一个问题,因为没有办法强制应用程序的上下文根,而不是context.xml应用程序文件,也没有其他配置。
只需升级到8.5.5并部署没有上下文问题的应用程序。
BR