【问题标题】:CXF and spring boot actuator, actuator end points not availableCXF 和弹簧套执行器,执行器端点不可用
【发布时间】:2018-01-07 08:13:59
【问题描述】:

我有一个带有 spring boot 1.4.2 和 CXF JAXRS 的项目设置。我想将弹簧启动执行器添加到项目中。这是我添加到项目中的配置。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator</artifactId>
</dependency>

在此之后我创建一个 WAR 文件,然后将其部署到外部 tomcat 服务器中。但是当我访问健康 URL localhost:8080/management/health 时,它会给出 404 HTTP 代码。服务器正常启动,我可以看到包含以下详细信息的日志:

健康配置日志

[localhost-startStop-1] 信息 org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - 映射“{[/management/health || /management/health.json],produces=[application/json]}" 公开 java.lang.Object

Servlet 配置日志

[localhost-startStop-1] 信息 org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean - 映射过滤器:“springSecurityFilterChain”到:[/*]

[localhost-startStop-1] 信息 org.springframework.boot.web.servlet.FilterRegistrationBean - 映射 过滤器:'webRequestLoggingFilter' 到:[/*]

[localhost-startStop-1] 信息 org.springframework.boot.web.servlet.FilterRegistrationBean - 映射 过滤器:'applicationContextIdFilter' 到:[/*]

[localhost-startStop-1] 信息 org.springframework.boot.web.servlet.ServletRegistrationBean - 映射 servlet: 'dispatcherServletRegistration' 到 []

[localhost-startStop-1] 信息 org.springframework.boot.web.servlet.ServletRegistrationBean - 映射 servlet: 'dispatcherServlet' 到 [/]

[localhost-startStop-1] 信息 org.springframework.boot.web.servlet.ServletRegistrationBean - 映射 servlet: 'CXFServlet' 到 [/services/*]

【问题讨论】:

  • 答案在日志中非常清楚...{[/management/health || /management/health.json] 代表路径...不是/health,而是/management/health。它就在那里……
  • 嗨,Deinum,谢谢你的评论。我的意思只是/管理/健康。我在问题中更正了它,我也解决了这个问题,并在下面提到。

标签: spring-boot cxf spring-boot-actuator


【解决方案1】:

问题已解决,这是详细信息。由于 CXF 和 spring boot 一起配置,CXF REST API 和执行器端点都配置为 '/'。为 CXF REST 端点配置的 servlet bean 的名称是 dispatcherServletRegistration。另一个原因是 CXF servlet 的自动配置也在发生,因为 CXf 的启动启动器在 POM 中。因此,您可以找到也为 /services/* 配置的 CXFServlet

映射 servlet:'dispatcherServletRegistration' 到 []

映射 servlet:'dispatcherServlet' 到 [/]

映射 servlet:'CXFServlet' 到 [/services/*]

我删除了自动配置选项 (CXFServlet),因为我有一些 CXF JAXRS 实现所需的自定义并将 dispatcherServletRegistration 映射到 /services/* 现在一切正常。现在执行器在 '/'/services 下的 CXF REST API 下工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2020-06-17
    • 2017-09-08
    相关资源
    最近更新 更多