我有一个 https 监听器,在 JBoss (Wildfly) 的 standalone.xml 中设置了 max-post-size:
<https-listener name="https" socket-binding="https" max-post-size="50000000" security-realm="ApplicationRealm" verify-client="REQUESTED" enable-http2="true" />
我有一个 JSON @RestController,我可以在其中使用 @ControllerAdvice :
@ExceptionHandler(MaxUploadSizeExceededException.class)
它很好地处理了上传过大文件的事件。
但是我还有一个 SOAP-XML @Endpoint:
@PayloadRoot(namespace = "http://service.upload.com/", localPart = "upload")
@ResponsePayload
public JAXBElement<UploadResponse> upload(@RequestPayload Upload upload) throws UploadException {
return service.process(upload);
}
这会返回 ugly HTML .
我想知道如何“建议”SOAP 接口(interface)处理过大请求的异常。
最佳答案
我认为您可以使用 Controller 建议来处理异常。
我使用 Spring 框架,在处理 soap 异常处理时,我通常会这样做:
@ControllerAdvice
@RequiredArgsConstructor
public class ControllerAdvice extends ResponseEntityExceptionHandler {
private final ObjectMapper objectMapper;
@ExceptionHandler(SoapFaultClientException.class)
public ResponseEntity<Object> handleSoapFaultClient(SoapFaultClientException ex) throws IOException {
Erro erro = objectMapper.readValue(ex.getMessage(), Erro.class);
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(erro);
}
@ExceptionHandler(WebServiceIOException.class)
public ResponseEntity<Object> handleWebServiceIOException(WebServiceIOException ex) throws IOException {
Erro erro = objectMapper.readValue(String.format(MESSAGE_TEMPLATE, ex.getMessage()), Erro.class);
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(erro);
}
...
}
关于java - Java Spring SOAP Webservice 中的 JBoss (Wildfly) max-post-size 句柄响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62811974/