java - Java Spring SOAP Webservice 中的 JBoss (Wildfly) max-post-size 句柄响应

标签 java soap jboss wildfly large-files

我有一个 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/

相关文章:

Java Scripting API,管理状态和通用功能

java - Spring引导管理配置

java - 如何使用 checkstyle 或 PMD 强制构造函数注入(inject)?

rest - 具象状态传输 (REST) 和简单对象访问协议(protocol) (SOAP)

C++:使用sqlite创建动态数据库以传输语音流

java - JBoss EAP 7 排除 webservices 子系统给出 NoClassDefFoundError : Failed to link EndpointDefinitionParser$SpringEndpointImpl

java - jboss as 7 在 webapp 初始化期间以编程方式查询管理端口

java - 以正确的顺序向 JTable 添加行。

java - 日期和日期时间应该如何序列化 SOAP (xml) 消息

java - 使用 UI 编写 JBoss Drools 规则