【发布时间】:2013-07-27 06:58:08
【问题描述】:
如果有人可以帮助我制定解决以下错误的策略,我将不胜感激,该错误以不可辨别的模式发生;大多数时候没有错误,大约 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 并找出导致此错误的原因。我将能够在服务器日志中看到它。
我正在做的是以 JSON 格式将一组 Toy 对象发布到服务器。也就是说,在客户端上,我将Toy 对象转换为Toy JSON。我发送的字符串是这样的:[{"toyName":"buzzlightyear", "toyMaker":"mattel"}]
我的理解是,当我将 JSON POST 到 jax-rs restful 服务时,jax-rs 实现(我使用的是 RESTeasy 1.2)会以某种方式自动将该 JSON 字符串转换为 java Toy 对象。
我在 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映射实体错了?谢谢!
【问题讨论】:
-
Unexpected EOF 的意思是:程序期待一些东西(一个右括号,一个 closin 标签)并且在此之前输入结束(得到 EOF)。检查一下。
-
嗨,我如何记录我的 JAX-RS 插入方法提交和接收的原始 json 字符串?请求对象?我看不到如何获取请求正文。
标签: json jakarta-ee jaxb jax-rs resteasy