当包含Jersey REST时,Spring引导不提供静态内容

时间:2016-02-03 07:00:09

标签: spring-boot jersey jersey-2.0

我在尝试从spring启动应用程序提供index.html(位于main / resources / static下)时收到HTTP 404错误。但是,如果我从项目中删除基于Jersey的JAX-RS类,那么http://localhost:8080/index.html可以正常工作。

以下是主要课程

@SpringBootApplication
public class BootWebApplication {

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

我不确定我在这里遗失了什么。

由于

1 个答案:

答案 0 :(得分:8)

问题是Jersey servlet路径的默认设置,默认设置为/*。这会占用所有请求,包括请求静态内容的默认servlet。因此请求将在Jersey查找静态内容,当它无法在Jersey应用程序中找到资源时,它将发送一个404.

你有几个选择:

  1. 将Jerse运行时配置为过滤器(默认情况下不是作为servlet)。有关如何执行此操作,请参阅this post。此外,使用此选项,您需要配置ServletProperties之一以将404转发到servlet容器。您可以使用配置Jersey的属性转发所有请求,这会导致找不到Jersey资源,或者使用允许您为请求配置正则表达式模式的属性。

    < / LI>
  2. 您可以简单地将Jersey servlet模式更改为默认值以外的其他模式。最简单的方法是使用ResourceConfig注释您的@ApplicationPath("/root-path")子类。或者您可以在application.properties - spring.jersey.applicationPath

  3. 中对其进行配置