reslet分页HttpClientHelper启动/停止

时间:2015-05-13 14:39:05

标签: java pagination restlet

我从一个初始的URI GET请求开始。我得到了结果以及下一批记录的链接。我循环直到我检索所有记录。事实上,当记录器显示HttpClientHelper在每个请求之后开始和停止时,性能正好受到打击。这是可以避免的吗?

Client client = new Client(new Context(), Protocol.HTTP);
ClientResource clientResource;
JsonRepresentation rep;
JSONObject object;
while(nextURI !=null)
{
    clientResource = new ClientResource(nextURI);

    //excessive HttpClientHelper start/stop triggered at next line
    rep = new JsonRepresentation(service.get(MediaType.APPLICATION_JSON));

    clientResource.setNext(client);
    .
    .
    .
}

记录器显示以下内容:

  

2015年5月13日9:30:52 org.restlet.ext.net.HttpClientHelper start

     

信息:启动HTTP客户端2015年5月13日上午9:30:53   org.restlet.ext.net.HttpClientHelper start

     

信息:启动HTTP客户端2015年5月13日上午9:30:53   org.restlet.ext.net.HttpClientHelper start

     

信息:启动HTTP客户端2015年5月13日上午9:30:53   org.restlet.ext.net.HttpClientHelper stop

     

信息:停止HTTP客户端2015年5月13日上午9:30:53   org.restlet.ext.net.HttpClientHelper stop

     

信息:停止HTTP客户端

1 个答案:

答案 0 :(得分:1)

我认为您调用方法setNext为时已晚。您需要在任何HTTP调用之前和创建ClientResource实例之后立即调用它,以防止在每次调用时启动客户端连接器。

您可以在下面找到示例:

Client client = new Client(new Context(), Protocol.HTTP);

for (int i = 0; i < 5; i++) {
    ClientResource clientResource = new ClientResource("http://...");
    clientResource.setNext(client);

    Representation representation = clientResource.get();
    (...)
}

在这种情况下,客户端连接器仅启动一次。

希望它可以帮到你, 亨利