0

我对 Wink 比较陌生,并试图调试一个缺陷,其中包含字节数组的 POJO [我认为] 被不正确地序列化为 json 以进行响应。不正确的意思是我将 unicode 字符存储为已提取到字节数组中的 blob,并且当字节数组序列化为 json 时,它被解码为 un​​icode 字节应表示的 UTF-8 字符以外的其他字符。

在试图追踪这个问题时,我已经验证了字节看起来与我期望的一样,直到它们从我的请求资源返回。我的@GET 请求资源方法返回一个列表。我通过阅读指南了解到

  1. RequestHandler 链被执行并最终调用我的资源方法......
  2. 资源方法(在这种情况下为@GET)的返回应该进入传递给 ResponseHandler 链的消息上下文,我认为......

我担心的是我的资源方法返回的 pojo 的内容(包含一个 byte[])没有被正确序列化,并且正在生成发送给用户的无效 json 内容。我返回的 List 如何进入 messageContext?

我无法将调试器附加到运行此应用程序的机器上。

4

1 回答 1

0

我部分回答了我的问题。从资源方法返回的对象附加到 MessageContext 对象的 responseEntity 属性。我假设 messageContext.setResponseEntity() 由 org.apache.wink.server.handlers.RequestHandler.InvokeMethodHandler 调用,但尚未验证这一点。

我仍然必须弄清楚为什么,当我的 byte[] 被序列化为 json 时,它没有假设 UTF-8 编码(并随后破坏了我的特殊字符)

于 2013-02-01T00:57:18.190 回答