CXF 和 spring 引导执行器,执行器端点不可用
CXF and spring boot actuator, actuator end points not available
我有一个项目设置 spring boot 1.4.2 和 CXF JAXRS。我想将 spring 引导执行器添加到项目中。这是我添加到项目中的配置。
<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 配置日志
[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 引导一起配置在一起,因此 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 APIs 在 /services.
下工作
我有一个项目设置 spring boot 1.4.2 和 CXF JAXRS。我想将 spring 引导执行器添加到项目中。这是我添加到项目中的配置。
<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 配置日志
[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 引导一起配置在一起,因此 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 APIs 在 /services.
下工作