如果有人可以帮助我制定解决以下错误的策略,我将不胜感激,该错误以不可辨别的模式发生;大部分时间没有错误,大约 90% 的时间我是成功的:
ERROR [org.jboss.resteasy.core.SynchronousDispatcher] Failed executing POST /toys/customer25/insert
org.jboss.resteasy.plugins.providers.jaxb.JAXBUnmarshalException: Unexpected end of stream
我如何将这个错误简单地记录到控制台?我想捕获此方法正在接收的 JSON 并找出导致此错误的原因。我将能够在服务器日志中看到它。
我正在做的是以Toy
JSON 格式将一组对象发布到服务器。也就是说,在客户端上,我将我的Toy
对象转换为Toy
JSON。我发送的字符串是这样的: [{"toyName":"buzzlightyear", "toyMaker":"mattel"}]
我的理解是,当我将 JSON 发布到 jax-rs restful 服务时,jax-rs 实现(我使用的是 RESTeasy 1.2)会以某种方式自动将该 JSON 字符串转换为 javaToy
对象。
我在 Java JAX-RS RESTful 服务上处理插入Toy
对象的 POST 的代码是这样的:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
@Path("toy/{customer}/insert")
public String insertToys(@PathParam("customer") String customer, List<Toy> toys);
如何记录/捕获 JSON 字符串有什么问题?在我看来,当insertToys()
方法被调用时,系统正在处理 JSON 到 Toy 对象的转换。所以很难弄清楚如何调试。
有人可以为我制定策略吗?我传入格式错误的 JSON(可能来自某些未转义字符)的可能性有多大?vs映射实体错了?谢谢!