在解组JSON时如何使Jersey / Moxy更具限制性?

时间:2014-06-06 09:51:39

标签: jax-rs moxy jersey-2.0

我目前正在Glassfish 4中使用Jersey和Moxy。如果它的JSON内容无效,有没有办法告诉Jersey / Moxy拒绝HTTP请求(即它包含的对象多于将JSON绑定到a时的对象POJO)?

1 个答案:

答案 0 :(得分:1)

我会创建自己的MOXyJsonProvider子类(参见:http://blog.bdoughan.com/2012/05/moxy-as-your-jax-rs-json-provider.html)。然后在该子类中,我将覆盖preReadFrom方法。在那个方法中,我会设置一个Unmarshaller.Listener

@Override
protected void preReadFrom(Class<Object> type, Type genericType,
        Annotation[] annotations, MediaType mediaType,
        MultivaluedMap<String, String> httpHeaders,
        Unmarshaller unmarshaller) throws JAXBException {
    Unmarshaller.Listener ul = new YourUnmarshallerListener();
    unmarshaller.setListener(ul);
}

然后Unmarshaller.Listener将在每次对象被解组时计数,如果读取的对象太多,则会出错。