Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 3667

Invalid use of BasicClientConnManager: connection still allocated

$
0
0

I am making a call to REST URL and trying to measure how much time it is taking to get the response back.

I am using DefaultHttpClient for that to get the response back from REST URL.

In my below program , each thread will be working on a particular range. Like Each Thread will work between 1 - 100 and second thread will work between 101 - 200 etc.

SO in my below code, for the first time it works fine. But for the second time, it is throwing exception on this line httpclient.execute for the second time as-

java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated.Make sure to release the connection before allocating another one.

Is there anything wrong I am doing here?-

Below is my code-

class Task implements Runnable {    private DefaultHttpClient httpclient = new DefaultHttpClient();    private HttpGet httpGet;    private HttpResponse response;    @Override    public void run() {        try {            httpGet = new HttpGet("http://localhost:8080/service/BEService/v1/get/USERID=10000/profile.ACCOUNT.SERVICE            httpGet.getRequestLine();            for (int userId = id; userId < id + noOfTasks; userId++) {                    long start = System.nanoTime();                    response = httpclient.execute(httpGet);                    long end = System.nanoTime() - start;                }        } catch (Exception e) {            LOG.error("Threw a Exception in "+ getClass().getSimpleName(), e);        }    }}

Updated Code:-

If I am doing it something like this-

class Task implements Runnable {    private DefaultHttpClient httpclient = new DefaultHttpClient();    private HttpGet httpGet;    private HttpResponse response;    @Override    public void run() {        try {            for (int userId = id; userId < id + noOfTasks; userId++) {                httpGet = new HttpGet("http://localhost:8080/service/BEService/v1/get/USERID=10000/profile.ACCOUNT.SERVICE");                httpGet.getRequestLine();                long start = System.nanoTime();                response = httpclient.execute(httpGet);                long end = System.nanoTime() - start;                HttpEntity entity = response.getEntity();                EntityUtils.consume(entity);                }        } catch (Exception e) {            LOG.error("Threw a Exception in "+ getClass().getSimpleName(), e);        }    }}

then it is fine or not?


Viewing all articles
Browse latest Browse all 3667

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>