JSON 请求中存在无效属性类型时,JAX-RS 2.0 不会抛出异常

JAX-RS 2.0 doesn't throw exception when there is invalid attribute type in JSON request

我有以下 REST 端点:

@Stateless
@Path("test")
public class TestResource {

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public TestDTO test(TestDTO dto) {
        return dto;
    }
}

TestDTO bean 非常简单:

public class TestDTO {
    private String id;
    private Integer number;
// + getter/setter
}

如果我 post 以下 JSON,响应将完全相同(正如在这个简单示例中预期的那样):

{
"id": "abc",
"number": 123
}

但是如果我为 "number" 发送一个字符串值:

{
"id": "abc",
"number": "NotANumber"
}

服务器不会初始化我的 TestDTO 的数字变量(值 = null),我的响应如下:

{
    "id": "abc"
}

我不明白...为什么服务器不响应“400 - 错误请求”? :/

这段代码是 运行 Weblogic 应用程序服务器版本 12.2.1.1.0 中提供的 Jersey 实现(我的 pom.xml 中只有一个依赖项:javaee-api 版本 7.0 )

好的...不抛出任何异常是 MOXy 的默认选择,新的默认 JAX-RS Json 所有 Oracle 产品(Glassfish 和 WebLogic)的提供程序(而不是 Jackson)。 这对我来说似乎很奇怪......但是是的,我们必须处理它:/

我们必须为此目的注册一个 ValidationErrorHandler。

我在那里找到了一个完整的(有效的)解决方案: Custom MOXyJsonProvider in Jersey 2 not working?