未连接邮件服务器时,Jhipster Health Endpoint失败

时间:2018-07-27 09:46:56

标签: spring-boot jhipster spring-boot-actuator

JHipster / Spring引导提供了一个不错的端点/management/health,在该端点中聚集了db,磁盘和邮件等子系统的运行状况信息。 不幸的是,当与邮件服务器的连接失败时,整个端点也会失败。因此您不会获得失败原因的信息。

我得到了这样的痕迹:

o.s.b.a.health.MailHealthIndicator       : Health check failed

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: XXXX, NNNN25025; timeout -1
...
   at org.springframework.boot.actuate.health.MailHealthIndicator.doHealthCheck(MailHealthIndicator.java:40)
    at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:43)
    at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:68)
    at org.springframework.boot.actuate.endpoint.HealthEndpoint.invoke(HealthEndpoint.java:85)
    at org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.getCurrentHealth(HealthMvcEndpoint.java:177)
    at org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.getHealth(HealthMvcEndpoint.java:166)
    at org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(HealthMvcEndpoint.java:143)

这是Spring Boot 1.5.9 我应该在哪里修复此问题,以便捕获异常并返回错误状态?

1 个答案:

答案 0 :(得分:0)

您必须打开SMTP服务器或禁用对其的检查。

要禁用对SMTP服务器的检查,请执行以下操作:

management.health.mail.enabled=false

要禁用对所有服务器的检查,请执行以下操作:

management.health.defaults.enabled=false

有关更多信息,请参见http://www.briansjavablog.com/2017/09/health-checks-metric-s-more-with-spring.html

我相信您可以使用Spring Boot 1.5.9版本的ExceptionHandler来处理此错误,因为较新的版本没有这样的问题:

     @ControllerAdvice
     public class ExceptionController {

        @ExceptionHandler(MailConnectException.class)
        public ResponseEntity<?> mailExceptionHandler(MailConnectException e) {
              // Do your treatment ...
            } ... 
    }