将Spring版本更新为4.2.3后,Spring控制器返回500服务器错误

时间:2015-12-16 15:26:56

标签: java spring spring-mvc

我在使用Spring 4.1.8.RELEASE版本时没有任何问题。我有Spring控制器的基本设置,它作为REST资源并定义了以下资源:

@RequestMapping(
            value = "/emailvalidation",
            method = RequestMethod.POST)
public ResponseEntity userEmailValidation(
            @Valid @RequestBody UserEmailValidationRequest request, BindingResult bindingResult) {
    validator.validate(ErrorCode.class, bindingResult);

    backendClient().validateUserEmail(request);

    return new ResponseEntity(HttpStatus.NO_CONTENT);
}

这是一个正常运行的资源,如果验证通过,它将返回HTTP状态为201的成功响应。

问题是,在将版本更新为4.2.3.RELEASE后,资源始终返回HTTP状态500.

是否有一种新的方式来处理我想要进行POST的那种资源,但是没有响应数据?我找不到任何关于此的更新,也没有任何问题。

2 个答案:

答案 0 :(得分:1)

问题是有一个运行时异常导致该方法返回500状态。

我有LoggingFilter,正在扩展org.springframework.web.filter.OncePerRequestFilter。在这个过滤器中,我有一个尝试获取响应输出流的方法(参见下面的用法)

byte[] responseData = response.getOutputBuffer();
String payload = new String(responseData).replace("\n", "");
message.append(";payload=").append(payload);

对于之前的版本最多4.2,response.getOutputBuffer()在没有响应数据时返回byte[0],所以一切都很好。 从版本4.2。*开始,如果没有响应数据,则会将其更改为返回null。这导致NullPointerException生成500 Server Error

答案 1 :(得分:0)

的NullPointerException。代码中的某个地方。这与Spring Framework无关。不幸的是,异常可能无法在控制台上打印。

错误500:SRVE0295E:报告错误:500