javax.ws.rs.core.Response.readEntity()陷入了无限循环

时间:2017-02-07 10:00:21

标签: java web-services java-ee jersey

我正在使用Foo f = response.readEntity(Foo.class)从javax.ws.rs.core.Response对象中获取实体。

问题是该语句似乎停留在循环中(根据htop使用100%的CPU),直到JVM最终因内存不足而终止。

我尝试使用调试器进行调查,但该函数是时间敏感的,当我尝试执行逐步跟踪时,服务会抛出TimeoutException

2 个答案:

答案 0 :(得分:1)

问题与readEntity()函数没有直接关系:查询参数未正确发送到API,因此搜索参数最终在SQL查询中为null。如果没有传递参数,这与数据库的默认行为是返回完整数据集,导致readEntity()方法被传递太多条目来处理(既不是无限的也不是循环)。

如果其他任何人冻结readEntity(),请考虑您无意中在Response对象中传递过多数据的可能性。

答案 1 :(得分:0)

我认为1K的数据不算过分:)大约一周前,我用一个复制器(在本期中提到)打开了这个https://github.com/eclipse-ee4j/jersey/issues/4081。在我的情况下,客户端没有使用100%的CPU。在readEntity()上被阻止