spring - Tomcat 上下文根 - 将 Spring 应用程序部署到 Tomcat 时出现 Tiles 异常

标签 spring jsp spring-mvc tomcat tiles

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

已编辑

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

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

最佳答案

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

只需升级到 8.5.5 并在没有上下文问题的情况下部署应用程序。

BR

关于spring - Tomcat 上下文根 - 将 Spring 应用程序部署到 Tomcat 时出现 Tiles 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39900216/

相关文章:

java - Spring Webflow IllegalStateException : Neither BindingResult nor plain target object for bean name available as request attribute

java - 以 Spring 形式为单个对象定义 POJO id

java - 如何将一组复选框值从一个 JSP 页面传递到另一个页面

java - 如何制作一个在系统的某个时间启动的方法?

java - scala 和 spring data neo4j - 没有为字段配置 FieldAccessor

java - 从 datasource.getConnection() 获取 OracleConnection

java - 检查 Struts 2 Web 应用程序中的 session 值

java - 我的坚持有什么问题吗?

spring - 为什么我们需要 jackson 数据绑定(bind)?

spring - Spring的@Autowired对象是否被重用?