首页 > 解决方案 > 提供 management.port 和 management.context-path 时执行器不工作

问题描述

我在我的应用程序属性中为弹簧启动执行器添加了不同的端口和上下文路径,但是当我访问时我得到以下响应

本地主机:9091/app/actuator/health

{
    "payload": {
        "timestamp": "2019-01-04T13:10:42Z",
        "status": 500,
        "error": "Internal Server Error",
        "exception": "org.springframework.beans.factory.BeanCreationException",
        "message": "Error creating bean with name 'scopedTarget.oauth2ClientContext': Scope 'session' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.",
        "path": "/app/actuator/health"
    }
}

这是我的配置

server:
  port: 9090
  contextPath: /app
...
management:
  port: 9091
  ssl.enabled: false
  security:
    roles: ACTUATOR_GET
  context-path: /app/actuator
endpoints:
  hypermedia:
    enabled: true
...

我究竟做错了什么 ?

我正在使用 spring-boot 1.5

标签: spring-bootspring-boot-actuator

解决方案


问题解决了。异常源自OncePerRequestFilter实施的自定义RememberMeServices。在那个过滤器中,我OAuthContext通过做来清除restTemplate.getOAuth2ClientContext().setAccessToken(null);- 这是导致BeanCreationException. 我已将此语句放在一个try-catch块中,执行器现在工作正常。


推荐阅读