为什么未调用“通用” MessageBodyReader / Writer实现?

时间:2019-11-25 19:38:41

标签: java java-ee jax-rs

我写了这个MessageBodyReader来与任何类型的对象匹配,但是没有被调用。 json-b的默认实现尝试将字符串解析为对象,但是在尝试解析日期时却给出了错误,该日期是我用杰克逊注释映射的,这表明未调用我的MessageBodyReader。

@Provider
@Consumes(MediaType.APPLICATION_JSON)
public class JacksonMessageBodyReader implements MessageBodyReader {

    @Override
    public boolean isReadable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) {
        return true;
    }

    @Override
    public Object readFrom(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, InputStream entityStream) throws IOException, WebApplicationException {
        return new ObjectMapper().readValue(entityStream, type);
    }

}

这里是一个简单的资源。

@Path("/visits")
public class VisitResource {

    @Inject
    Repository<Visit> repository;

    ....

    @POST
    public Response post(Visit visit) {
        repository.create(visit);
        return Response.status(Response.Status.CREATED).build();
    }
}

0 个答案:

没有答案