如何在 Spring Boot 应用程序中禁用执行器的拦截器调用

2024-02-01

我正在尝试在基于微服务的 spring boot 应用程序中实现 Prometheus,该应用程序部署在 weblogic 服务器上。作为 POC 的一部分,我已将配置包含在一场战争中。为了启用它,我设置了以下配置 -

应用程序属性

 management:
  endpoint:
   prometheus:
    enabled: true   
 endpoints:
  web:
    exposure:
     include: "*"

Gradle -

    implementation 'io.micrometer:micrometer-registry-prometheus'

但是执行器请求被现有拦截器阻止。它要求传递特定于我们项目的标头中的值。通过邮递员(http:localhost:8080/abc/actuator/prometheus),我能够测试我的POC(带有所需的标头)并返回Prometheus期望的时间序列数据。但是 Prometheus 无法自行废弃数据(使用拉取方法),因为调用缺少请求中的标头。

我尝试了以下链接(link1 https://stackoverflow.com/a/34974725/2586617,link2 https://stackoverflow.com/questions/31082981/spring-boot-adding-http-request-interceptors)绕过它,但我的请求仍然被现有拦截器拦截。 拦截请求的拦截器是依赖 jar 的一部分。

编辑—— 我使用以下方法来排除对拦截器的所有调用 -

 @Configuration
 public class MyConfig implements WebMvcConfigurer{

@Override
public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new MyCustomInterceptor()).addPathPatterns("**/actuator/**");
}

}

我的自定义拦截器

@Component
 public class MyCustomInterceptor implements HandlerInterceptor{

  }

我没有在 MyCustomInterceptor 中实现任何自定义内容(因为我只想排除其他拦截器对“执行器”端点的所有调用)。


@Configuration
public class ActuatorConfig extends WebMvcEndpointManagementContextConfiguration {

  public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebAnnotationEndpointDiscoverer endpointDiscoverer,
                                                                       EndpointMediaTypes endpointMediaTypes,
                                                                       CorsEndpointProperties corsProperties,
                                                                       WebEndpointProperties webEndpointProperties) {
    WebMvcEndpointHandlerMapping mapping = super.webEndpointServletHandlerMapping(
      endpointDiscoverer,
      endpointMediaTypes,
      corsProperties,
      webEndpointProperties);

    mapping.setInterceptors(null);

    return mapping;
  }
}

也许你可以通过设置 null 来覆盖。我得到了代码https://github.com/spring-projects/spring-boot/issues/11234 https://github.com/spring-projects/spring-boot/issues/11234

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Spring Boot 应用程序中禁用执行器的拦截器调用 的相关文章

随机推荐

  • Angular2 与 Material Design Lite

    我在我的 angular2 应用程序中添加了以下代码 以帮助 MDL 在应用程序中移动时重新注册组件 ngAfterViewInit componentHandler upgradeDom 尽管它似乎工作正常 如预期 但我收到以下错误 16
  • 什么可以解释调用 free() 时的堆损坏?

    我已经调试了几天的崩溃 该崩溃发生在 OpenSSL 的深处 与维护者讨论here https www mail archive com openssl dev openssl org msg38571 html 我花了一些时间进行调查 所
  • 基本数据类型(字符串和整数)如何在 Python 和 Perl 中实现

    最近我一直想知道我对字符串和整数等基本类型执行的各种操作在性能方面如何工作 并且我认为如果我知道这些基本类型是如何实现的 即我已经听说 Python 中字符串和整数是不可变的 这是否意味着任何修改字符串中一个字符的操作都是 O n 因为必须
  • sql中的特殊字符排序

    我有名为 联系人 的表 有名为 id 和 name 的列 各列值如下所示 ID Name 1 ABC 3 DEF 2 GHI JKL null MNO null PQR 我需要查询要在顶行列出的特殊字符 如下所示 ID Name JKL 1
  • CakePHP:Ajax 请求的控制器响应错误

    我正在使用 jQuery 向某些控制器操作发出 AJAX 请求 该请求是通过同一控制器中编辑操作视图中的按钮激活的 我的问题 Ajax 请求返回编辑视图的所有代码 包含所有表单和输入 而不是预期的数量 如果我将相同的 ajax 按钮放在添加
  • javascript 在 Rails 3.1 基于资产的应用程序中包含两次

    尽管问题的标题与之前的一些问题非常相似 但我的问题似乎有所不同 简要地 第一项在 js 清单中包含两次 这是我的全部 app assets javascript application jsRails 3 1 应用程序中的文件 requir
  • iOS:UIPageViewController - 使用按钮跳转到下一页

    我在 PageViewController 中有一系列 VC 用户可以用手指从左到右导航 我需要添加按钮 这些按钮基本上执行与手指滑动相同的操作 即通过 VC 向左或向右移动 1 个 我怎样才能做到这一点 现在我正在使用这两种方法在用户滑动
  • Python pip freeze 中的三等号和 ubuntu2 是什么?

    在我的 AWS Ubuntu 14 04 实例上 我刚刚做了一个pip freeze gt requirements txt这给了我一个文件 其中还包含以下两行 python apt 0 9 3 5ubuntu2 python debian
  • PyCharm 中所有 pip 安装均“未找到匹配的发行版”

    我在 Windows 7 上运行 PyCharm Community Edition 2016 1 2 和 Python 3 4 3 并且有以下行为 在 PyCharm 中安装新包 从 设置 gt 项目解释器 失败并显示错误消息No mat
  • select from ... - 基于 JSON 格式的值

    假设我有一个数据库表 其中包含几个常见列 例如姓名 性别 年龄 此外 我还有一个附加列 使用 JSON 数据类型 可从 Postgres 9 2 获得 在 JSON 中具有任意长度和任意字段 occupation football occu
  • 当我在 youtube api 中使用 order-date 时,会出现总结果,但找不到项目

    当我在 youtube api 中使用 order date 时 会有总结果 但未找到项目 YOUR API KEY YOUR API KEY 这两个链接给出不同的结果 None
  • 通过另一个列表/数组过滤 Linq 子集合

    当我尝试根据简单值过滤子集合时 我可以通过执行以下操作轻松完成 db Table Where a gt a SubTable Any b gt b SubTableId 1 但是 当我尝试根据与其对应的值列表过滤同一个子集合时 我总是收到错
  • 我正在尝试在 angular1 项目中使用 ag-grid

    我在 Jhipster 从 Angular 1 项目开始 我对 ag grid 组件有一些问题 第一 我对所有组件使用 Bower 并在 angular js 文件之前包含我的 ag grid 文件 我想我可以通过使用覆盖来解决这个问题 但
  • 无法在 savon 调用上设置 SOAP 标头参数

    我正在使用 savon 2 2 进行 SOAP 调用 初始化 client Savon client wsdl SOAP WSDL endpoint SOAP URL 我可以像这样进行 SOAP 调用 并且效果很好 resp client
  • onBackPressed() 已弃用。还有什么选择呢?

    我已经升级了targetSdkVersion and compileSdkVersion to 33 我现在收到一条警告 告诉我按下后退 https developer android com reference android app A
  • Scala 与 Akka 中的相互身份验证

    我将使用 Akka 在 Scala 中创建一个 TLS 会话 并在客户端和服务器之间进行相互身份验证 我创建了两个 CA 证书 它们必须信任来自另一部分的相应证书 您能给我一个如何实现这一点的例子吗 谢谢 我创建了一个 github 项目
  • 如何从 PyQt 中的另一个线程访问 GUI 元素

    我正在尝试创建一个客户端 服务器应用程序 当服务器关闭时 我希望关闭在另一个线程上运行的客户端 GUI 我希望访问 GUI 并关闭 但出现 X 错误 实施不当 我该如何解决这个问题 您可以做的是当第一个线程关闭时发出自定义信号 from P
  • 当输入更改时如何运行 javascript 函数

    当用户在我的网站上创建新帐户时 我想检查该名称是否已存在 我希望当他们离开用户名输入框并输入密码时运行此检查 我试过
  • Python模拟:如何测试递归函数的调用次数?

    我有一个递归函数 位于名为的模块中test module import requests def send msg msg retries 0 try send the message here e g a http request res
  • 如何在 Spring Boot 应用程序中禁用执行器的拦截器调用

    我正在尝试在基于微服务的 spring boot 应用程序中实现 Prometheus 该应用程序部署在 weblogic 服务器上 作为 POC 的一部分 我已将配置包含在一场战争中 为了启用它 我设置了以下配置 应用程序属性 manag