gpt4 book ai didi

java - 当我的 HealthIndicator 返回 DOWN 时,如何强制服务器发回 HTTP 错误 500

转载 作者:行者123 更新时间:2023-12-01 09:12:51 25 4
gpt4 key购买 nike

我有这个 HSMHealthIndicator.java 类,它没有实现 HealthIndicator :

@Component
public class HSMHealthIndicator {

/* constructor */
public HSMHealthIndicator() {

setServiceFactory(Application.getServiceFactory());
errorMessage = "";
}

public Health health() {

if (checkHSMStatus() != 0) {
return Health.down().withDetail("Error Code", checkHSMStatus()).build();
}
return Health.up().build();
}

private int checkHSMStatus() {
try {
serviceFactory.getService().ping();
}
catch (Exception e){
logger.error("Exception", e);
setErrorMessage(e.getMessage());
return 1;
}
return 0;
}

....
}

此 HealthIndicator 由实现 Endpoint 接口(interface)的 HSMandDbEndpoint 类使用:

public class HSMandDbEndpoint implements Endpoint {

private String host;
private int port;

public HSMandDbEndpoint(String host, int port) {
this.host = host;
this.port = port;
}

...

@Override
public String invoke() {

StringBuilder sb = new StringBuilder();
HSMHealthIndicator h = new HSMHealthIndicator();
h.setHost(getHost());
h.setPort(getPort());
Status s = h.health().getStatus();
sb.append("Status of the HSM : " + s.getCode());
if (Status.DOWN.getCode().equalsIgnoreCase(s.getCode()))
sb.append(" - " + h.getErrorMessage());
return sb.toString();
}
}

当我使用与 HSM 不同的 IP 地址进行一些测试时,我得到了预期的“DOWN”。但我的 HTTP 响应中有代码 200。我希望它发回 HTTP 错误 500。我该怎么办?

最佳答案

这可能应该是 503 而不是 500。您的 invoke 方法应返回一个 ResponseEntity。您可以查看the source code of HealthMvcEndpoint了解更多详情。

关于java - 当我的 HealthIndicator 返回 DOWN 时,如何强制服务器发回 HTTP 错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40807015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com