【问题标题】:Tomcat Context Root - Tiles Exception when deploy a Spring app to TomcatTomcat Context Root - 将 Spring 应用程序部署到 Tomcat 时出现 Tiles 异常
【发布时间】:2016-10-06 15:37:16
【问题描述】:

我在 tomcat 中部署了一个 Spring MVC 4 应用程序。它工作正常。我必须克隆这个应用程序才能拥有几个具有相同行为但配置不同的应用程序:用于文件管理的数据库实例和文件夹。每个针对不同的客户。当我将原始应用程序部署到 Linux Tomcat 时,它工作正常 (https://hostname:8443/app1)。

然后我更改数据库连接设置(数据库名称、用户名和文件夹以管理一些生成的文件)并将工件的名称更改为客户名称。但是当我进入应用程序时,它显示正确的登录页面,但是当我登录应用程序时,我收到以下错误:

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 时,它是图块模板的一部分。部署的应用程序中存在文件,它能够到达登录页面,因此似乎解决了tiles config,但我不知道为什么无法访问jsp文件。它在没有安全 Tomcat(端口 8080)的本地窗口中运行良好。

已编辑

如果我将 customername.war 的名称更改为 app1.war,它可以正常工作。有人知道war文件在哪里保存对基本应用程序app1的引用吗?似乎在某处引用了 app1,如果我更改应用程序名称(工件 id),它不会引用客户名称路径。

似乎这是一个上下文根问题。我已经在 STS(项目 > 属性 > Web 项目设置 > 上下文根)中对其进行了更改,部署在 Tomcat 上但仍然无法正常工作。假设只有更改war文件名,应用程序的上下文根应该更新,但它不起作用。

【问题讨论】:

  • 这对我们来说很紧急。 ;-)
  • 也许你的结构配置为“hostname:8443
  • 不,如果我将应用程序名称更改为原始 app1 名称,它会部署 app1 Web 应用程序,并且同一个 Web 应用程序可以在上下文根 app1 中正常工作,但如果更改为 customername 则不能

标签: spring jsp spring-mvc tomcat tiles


【解决方案1】:

将 Tomcat 从 8.0 升级到 8.5.5 解决了这个问题。我不知道为什么,但是 8.0 中存在一个问题,因为无法强制应用程序的上下文根,而不是 context.xml 应用程序文件,也不是其他配置。

只需升级到 8.5.5 并部署应用程序而不会出现上下文问题。

BR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2016-01-16
    • 2014-12-25
    相关资源
    最近更新 更多