2017-03-17 45 views
2

我有一个Spring启动应用程序与以下启动代码。执行器端点被映射,豆被删除。我看到执行器端点已注册,然后移除了豆子。通过SO thread,消息是无害的。但是,当我试图达到任何执行机构终点时,我就会出现错误。我不确定我应该进一步研究以获得执行器的工作。我附上了我所指的所有日志片段。春季启动应用执行器端点得到注册,请求仍然失败

我有项目设置与Maven:

Maven的弹簧操动部分

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

Java启动代码

@EnableAutoConfiguration(exclude = { MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class, MessageSourceAutoConfiguration.class }) 
@EnableConfigurationProperties({ MyAppProperties.class }) 
@SpringBootApplication 
public class MyApp{ 
    private static final Logger LOG = LoggerFactory.getLogger(MyApp.class); 
    public static void main(String[] args) throws UnknownHostException { 
     SpringApplication app = new SpringApplication(MyApp.class); 
     Environment env = app.run(args).getEnvironment(); 
     LOG.info("\n----------------------------------------------------------\n\t" + 
       "Application '{}' is running! Access URLs:\n\t" + 
       "Local: \t\thttp://localhost:{}\n\t" + 
       "External: \thttp://{}:{}\n----------------------------------------------------------", 
      env.getProperty("spring.application.name"), 
      env.getProperty("server.port"), 
      InetAddress.getLocalHost().getHostAddress(), 
      env.getProperty("server.port")); 
} 
} 

执行机构开始端点按日志在DEBUG模式下:

2017-03-17 11:19:29.378 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/info || /info.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke() 
2017-03-17 11:19:29.379 DEBUG 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : 1 request handler methods found on class org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint: {public void org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint.invoke(boolean,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException,javax.servlet.ServletException={[],methods=[GET],produces=[application/octet-stream]}} 
2017-03-17 11:19:29.379 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/heapdump || /heapdump.json],methods=[GET],produces=[application/octet-stream]}" onto public void org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint.invoke(boolean,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException,javax.servlet.ServletException 
2017-03-17 11:19:29.380 DEBUG 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : 1 request handler methods found on class org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter: {public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()={[],methods=[GET],produces=[application/json]}} 
2017-03-17 11:19:29.380 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/trace || /trace.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke() 
2017-03-17 11:19:29.384 DEBUG 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : 2 request handler methods found on class org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint: {public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)={[/{name:.*}],methods=[GET],produces=[application/json]}, public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()={[],methods=[GET],produces=[application/json]}} 
2017-03-17 11:19:29.384 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/metrics/{name:.*}],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String) 
2017-03-17 11:19:29.384 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke() 
2017-03-17 11:19:29.384 DEBUG 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : 1 request handler methods found on class org.springframework.cloud.context.restart.RestartMvcEndpoint: {public java.lang.Object org.springframework.cloud.context.restart.RestartMvcEndpoint.invoke()={[],methods=[POST]}} 
2017-03-17 11:19:29.384 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/restart || /restart.json],methods=[POST]}" onto public java.lang.Object org.springframework.cloud.context.restart.RestartMvcEndpoint.invoke() 
2017-03-17 11:19:29.386 INFO 17855 --- [   main] o.s.b.a.e.mvc.EndpointHandlerMapping  : Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke() 
2017-03-17 11:19:29.386 DEBUG 17855 --- [   main] o.s.b.f.s.DefaultListableBeanFactory  : Finished creating instance of bean 'endpointHandlerMapping' 
2017-03-17 11:19:29.386 DEBUG 17855 --- [   main] f.a.AutowiredAnnotationBeanPostProcessor : Autowiring by type from bean name 'org.springframework.boot.actuate.autoconfigure.EndpointWebMvcChildContextConfiguration$EndpointHandlerMappingConfiguration' to bean named 'mvcEndpoints' 

最后,我在豆被删除的日志中看到:

2017-03-17 11:19:29.415 DEBUG 17855 --- [   main] o.s.w.s.h.BeanNameUrlHandlerMapping  : Rejected bean name 'endpointHandlerMapping': no URL paths identified 
2017-03-17 11:19:29.415 DEBUG 17855 --- [   main] o.s.w.s.h.BeanNameUrlHandlerMapping  : Rejected bean name 'mvcEndpoints': no URL paths identified 
2017-03-17 11:19:29.415 DEBUG 17855 --- [   main] o.s.w.s.h.BeanNameUrlHandlerMapping  : Rejected bean name 'environmentMvcEndpoint': no URL paths identified 
2017-03-17 11:19:29.415 DEBUG 17855 --- [   main] o.s.w.s.h.BeanNameUrlHandlerMapping  : Rejected bean name 'heapdumpMvcEndpoint': no URL paths identified 
2017-03-17 11:19:29.415 DEBUG 17855 --- [   main] o.s.w.s.h.BeanNameUrlHandlerMapping  : Rejected bean name 'healthMvcEndpoint': no URL paths identified 
2017-03-17 11:19:29.415 DEBUG 17855 --- [   main] o.s.w.s.h.BeanNameUrlHandlerMapping  : Rejected bean name 'metricsMvcEndpoint': no URL paths identified 

当我做出/info/health的请求到达信息健康,我引导到白色标签错误页面,因为没有找到处理程序。

在调试调度程序servlet后,我看到有7个处理程序,我期望在BeanNameUrlHandlerMapping中找到/info的映射。

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping 
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping  
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping 
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping 
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping 
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WelcomePageHandlerMapping 

由于在列表中的第一个映射为SimpleUrlHandlerMapping,它会立即返回“不处理程序映射”它带我到错误页面。我试着检查订单是否重要,并偷看到BeanNameUrlHandlerMapping以查看它是否返回处理程序映射,并且它没有返回任何结果。所以我怀疑之前删除bean的调试消息是导致此问题的罪魁祸首。

有人可以建议,如果有什么我需要特别关注。

+0

是否使用Spring Security的,或Servlet过滤器? –

+0

我确实有一些过滤器。我删除了它们,但仍未解决问题。 – randominstanceOfLivingThing

回答

1

按照入门指南:Building a RESTful Web Service with Spring Boot Actuator你应该使用spring-boot-starter-actuator首发:

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

,而不是依赖spring-boot-actuator

还要注意根据Spring Boot reference

通过HealthIndicators返回的信息通常在本质上是有些敏感。例如,您可能不想将数据库服务器的详细信息发布到全球。为此,默认情况下,只有健康状态通过未经身份验证的HTTP连接公开。如果您对完整的健康信息感到满意,您可以将endpoints.health.sensitive设置为false

+0

改变,展望日志,因为它无法正常工作。 – randominstanceOfLivingThing

+0

不工作。 – randominstanceOfLivingThing

+0

我已经延长了我的答案。 –