我有一个带有 spring boot 1.4.2 和 CXF JAXRS 的项目设置。我想将 spring boot actuator 添加到项目中。这是我添加到项目中的配置。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
之后我创建了一个 WAR 文件,然后将其部署到外部 tomcat 服务器中。但是当我访问健康 URL localhost:8080/management/health 时,它给出了 404 HTTP 代码。服务器正常启动,我可以看到包含以下详细信息的日志:
健康配置日志
[localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/management/health || /management/health.json],produces=[application/json]}" onto public java.lang.Object
Servlet(s) 配置日志
[localhost-startStop-1] INFO org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean - Mapping filter: 'springSecurityFilterChain' to: [/*]
[localhost-startStop-1] INFO org.springframework.boot.web.servlet.FilterRegistrationBean - Mapping filter: 'webRequestLoggingFilter' to: [/*]
[localhost-startStop-1] INFO org.springframework.boot.web.servlet.FilterRegistrationBean - Mapping filter: 'applicationContextIdFilter' to: [/*]
[localhost-startStop-1] INFO org.springframework.boot.web.servlet.ServletRegistrationBean - Mapping servlet: 'dispatcherServletRegistration' to []
[localhost-startStop-1] INFO org.springframework.boot.web.servlet.ServletRegistrationBean - Mapping servlet: 'dispatcherServlet' to [/]
[localhost-startStop-1] INFO org.springframework.boot.web.servlet.ServletRegistrationBean - Mapping servlet: 'CXFServlet' to [/services/*]
最佳答案
问题已解决,这里是详细信息。由于 CXF 和 spring boot 一起配置在一起,因此 CXF REST API 和执行器端点都配置为 '/'。为 CXF RESt 端点配置的 servlet bean 的名称是 dispatcherServletRegistration。 CXF servlet 的自动配置也正在发生,因为 CXf 的引导启动程序在 POM 中。因此你会发现 CXFServlet 也为 /services/* 配置。
Mapping servlet: 'dispatcherServletRegistration' to []
Mapping servlet: 'dispatcherServlet' to [/]
Mapping servlet: 'CXFServlet' to [/services/*]
我删除了自动配置选项 (CXFServlet),因为我有一些 CXF JAXRS 实现所需的自定义并将 dispatcherServletRegistration 映射到 /services/ * 现在一切正常。现在执行器在 '/' 下工作,CXF REST API 在 /services 下工作。
关于spring-boot - CXF 和 Spring 启动执行器,执行器端点不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45421261/