(我自己回答这个问题)
问题是我有并发的尝试过程 readEntity() ,第一个进程消耗了输入流(或者甚至可能已经关闭了流),第二个进程要么被抛出了 IllegalStateException 或得到一个空信息。这是什么的 JavaDoc javax.ws.rs.core.Response (哪一个 org.apache.cxf.jaxrs.impl.ResponseImpl 延伸)说:
readEntity()
IllegalStateException
javax.ws.rs.core.Response
org.apache.cxf.jaxrs.impl.ResponseImpl
的 抛出: 强> IllegalStateException - 如果实体不支持 输入流,响应已经关闭,或者是实体 输入流已经完全消耗并且尚未缓冲 事先消费。
的 抛出: 强>
IllegalStateException - 如果实体不支持 输入流,响应已经关闭,或者是实体 输入流已经完全消耗并且尚未缓冲 事先消费。
所以为了解决这个问题,我改变了我的设计来缓存而不是 Response 对象,而不是作为结果的字符串消息 readEntity() 呼叫。当响应返回时,调用将完成一次:
Response
Response resp ... String respStr = resp.readEntity(String.class);
问题解决了。