在 Tomcat 上通过 IntelliJ 部署 SpringBoot(休息服务)战争给出 404

Posted

技术标签:

【中文标题】在 Tomcat 上通过 IntelliJ 部署 SpringBoot(休息服务)战争给出 404【英文标题】:Deploying SpringBoot (rest services) war via IntelliJ on Tomcat gives 404's 【发布时间】:2017-12-27 22:51:21 【问题描述】:

通过(直接)运行应用程序来启动一个小型 SpringBoot 应用程序,REST 服务 localhost:8080/xyz/a 会给出正确的 JSON 结果。

通过 IntelliJ,我配置了一个 Tomcat 服务器。我添加了这个 WAR,其上下文根为“/contextroot”。所以我希望 URL REST 是 localhost:8080/contextroot/xyz/a。这不断收到 404 错误。

    您能帮我获取正确的配置或网址吗?

    有没有办法查看哪些 URL 是从控制器映射到 URL 的?或者:我怎样才能更容易地解决这些映射问题(来自 Tomcat)?

在 Maven Pom.xml 我有:

<groupId>nl.xyz</groupId>
<artifactId>contextroot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>contextroot</name>
<packaging>war</packaging>

inside 也是 contextroot。

【问题讨论】:

你可以在server.xml中查看上下文路径的url() 【参考方案1】:

@Jonhib - 感谢您的帮助。

问题在于我将 SpringBoot (jar) 应用程序部署为 WAR 的方式。

通过这 3 个步骤将 SpringBoot 标准应用程序更改为可部署(老式)WAR。这是必需的,因为我将它与 Angular4 应用程序一起部署。

第 1 步 - 更改标准 SpringBoot 应用程序:

@SpringBootApplication
public class Application extends SpringBootServletInitializer 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
        return application.sources(Application .class);
    

    public static void main(String[] args) 
        SpringApplication.run(Application .class, args);
    

    将构建过程的目标从“jar”更改为“战争”。

    战争包装>

    在 pom.xml maven 文件中添加新的依赖项:

    ... org.springframework.bootspring-boot-starter-tomcat提供依赖> ... 依赖>

【讨论】:

以上是关于在 Tomcat 上通过 IntelliJ 部署 SpringBoot(休息服务)战争给出 404的主要内容,如果未能解决你的问题,请参考以下文章

Intellij IDEA通过tomcat部署web项目的机制

Intellij IDEA通过tomcat部署web项目的机制

IntelliJ IDEA通过Tomcat启动项目过程分析

使用 Intellij 构建 War 并部署到 Tomcat

使用 Spring Boot + IntelliJ 进行开发的最佳方式

Intellij IDEA 部署tomcat并创建Java web项目