我有码头服务器,它执行一些逻辑,完成后,它会创建一个json字符串(使用杰克逊)并将其作为响应发送。如果在创建json期间存在异常,则抛出JsonProcessingException。此异常冒泡到UncaughtErrorHandler(在Jetty中扩展了ErrorHandler),该日志记录该异常并返回一些失败消息和状态码500。
这仅用于后端api。
端点不是幂等的(它是后端点),当命中端点并应用逻辑时,应用程序(即数据库)的状态会发生变化。
现在,如果发生JsonProcessingException,则用户将收到失败消息,并且将不知道进程/逻辑已完成。
我该如何处理?
这是我对可能的解决方案的想法:
您还有其他建议吗?
下面是一些示例代码来显示发生这种情况的地方:
private String createFailedResponseBodyJson(FailedPlaneLandStatus failedPlaneLandStatus) throws JsonProcessingException {
LinkedHashMap<String, String> jsonBody = new LinkedHashMap<>();
jsonBody.put("PlaneId", failedPlaneLandStatus.planeId.value);
jsonBody.put("PlaneStatus", failedPlaneLandStatus.planeStatus.name());
jsonBody.put("AirportStatus", failedPlaneLandStatus.airportStatus.name());
jsonBody.put("LandFailureReason", failedPlaneLandStatus.failureMessage.toString());
return new ObjectMapper().setDefaultPrettyPrinter(new DefaultPrettyPrinter())
.writerWithDefaultPrettyPrinter().writeValueAsString(jsonBody);
}
是writeValueAsString()方法引发JsonProcessingException
我认为我对现有的行为感到满意(第一个要点)。但是我只想知道其他解决方案(其他要点)是否可行,或者是否还有其他解决方案?
谢谢