【问题标题】:WAR file deployed on Tomcat not reading application.properties File部署在 Tomcat 上的 WAR 文件未读取 application.properties 文件
【发布时间】:2019-12-22 07:09:38
【问题描述】:

我使用 Java 中的 Spring Boot Framework 创建了一个演示 REST API。我想将此 API 作为 WAR 文件部署在 Tomcat 8 上。 API 已经配置为使用 Spring Initializr 编译为 WAR 文件。但是,在部署 API 时,它不会从项目中读取 application.properties 文件。

  • 我已经尝试过使用@PropertySource@PropertySources 注释。
  • 我还尝试在 pom.xml 文件中的 <build> 标签中包含 <resources> 标签。
  • 我也尝试将.properties("classpath:application.properties") 添加到ServletInitializer

没有任何效果


更新

我在这篇文章中使用了上下文路径作为示例。在我的实际应用程序中,我在 application.properties 中存储了一些属性,而应用程序没有读取它们。


这是我的代码文件:

  • application.properties
server.servlet.context-path=/api
  • Application.java
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • ServletInitializer.java
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
  • User.java
@RestController
@RequestMapping("/user")
public class User {

    @GetMapping("")
    public String getUser() {
        return "User is here...";
    }
}

点击localhost:8080/demo/api/user URL 应该会给出我们想要的输出,但它会给出 404 结果。然而,点击localhost:8080/demo/user 会给出所需的输出。 这意味着应用程序没有读取 application.properties 文件,因为该 api 的默认路由在该文件中设置为 /api

【问题讨论】:

  • 只有在 Spring Boot 启动嵌入式 Web 服务器时才能使用此属性。如果您将war文件部署到外部应用服务器,则应用无法以编程方式更改自己的上下文路径:应用必须已经部署并开始读取属性文件,如果已部署并启动,则它已经具有上下文路径。您必须遵循 Tomcat 的规则来选择上下文路径。
  • 我创建这个演示应用程序只是为了发布这个问题。在我的实际应用程序中,我有一些属性要从属性文件中读取,但它们没有被读取。

标签: java spring spring-boot tomcat tomcat8


【解决方案1】:

只有嵌入式 tomcat 支持 server.servlet.context-path。如果您要部署到外部 tomcat,请按照此处的指南设置上下文路径:https://tomcat.apache.org/tomcat-8.0-doc/config/context.html

现在,验证 application.properties 是否捆绑在 WAR 文件中。为此,请提取或打开 WAR 文件。如果未包含,则验证您的构建文件是否资源插件正在复制资源文件。

如果 application.properties 包含在 WAR 中,请尝试读取应用程序中的其他属性。

【讨论】:

    猜你喜欢
    • 2010-09-13
    • 2012-07-29
    • 2017-11-08
    • 2020-06-19
    • 2015-09-03
    • 1970-01-01
    • 2016-08-23
    • 2015-05-08
    相关资源
    最近更新 更多