一尘不染

Spring Boot Jersey和监视URL

tomcat

我们在Jersey上有一个简单的Spring Boot应用程序。

Spring Boot提供默认的监视端点

http://docs.spring.io/spring-boot/docs/current-
SNAPSHOT/reference/htmlsingle/#production-ready-
monitoring

例:

@Component
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {
        // registering resources from rest package
        packages("com.xyx.abc.rest");

    }

}

Spring Boot提供的REST端点在Spring Boot Jersey应用程序的上下文中不可用。

Spring Boot依赖项包括Jersey,starter-actuator,starter-tomcat。

我们的REST资源显示得很好,但是Spring Boot提供的用于监视的资源却没有显示。

例如,http: //abc.xyx.com
: 8080/
health返回404


阅读 371

收藏
2020-06-16

共1个答案

一尘不染

如果您将其用作Filter,则需要告诉Jersey不要处理这些请求。例如,通过将Jersey资源放在单独的路径下,例如“ / api /
*”或类似的内容:

@Bean
public FilterRegistrationBean jersey() {
    FilterRegistrationBean bean = new FilterRegistrationBean();
    ...
    bean.setUrlPatterns(Lists.newArrayList("/api/*"));
    return bean;
}

(从这里开始)。

或通过声明您的管理端点为“静态”(通过另一个初始化参数“
com.sun.jersey.config.property.WebPageContentRegex”):

@Bean
public FilterRegistrationBean jersey() {
    FilterRegistrationBean bean = new FilterRegistrationBean();
    ...
    bean.addInitParameter("com.sun.jersey.config.property.WebPageContentRegex",
            "/admin/.*");
    return bean;
}

我们management.contextPath=/admin在Spring Boot外部配置中设置的位置(否则,您必须枚举正则表达式中的所有端点)。

您还可以告诉Jersey忽略未解决的请求(而不是发送404)。这也可以实现您的目标,但可能会影响您的客户端应用程序(如果它们依赖于404行为)。

2020-06-16