Velvet Star Monitor

Standout celebrity highlights with iconic style.

news

java.lang.IllegalStateException: Connection pool shut down

Writer Sophia Terry

I am trying to post data to a REST service using Http and I have configured my client as follows:

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(60); cm.setDefaultMaxPerRoute(60); CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(cm).build(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); CloseableHttpResponse response = null;

Now I have an executor service which is responsible for calling the actual posting, I hand over the above params to Executor service as follows:

executor.execute(new LocalThreadPoolExecutor(line, client, httpPost,response ));

line is the JSON payload I am trying to send across.

Now my method in executor service looks like:

private void postData(String data, CloseableHttpClient client, HttpPost httpPost, CloseableHttpResponse response) throws Exception { System.out.println("Post hit"); StringEntity entity = new StringEntity(data); httpPost.setEntity(entity); response = client.execute(httpPost); int code = response.getStatusLine().getStatusCode(); System.out.println("Stat" + code); logger.info("Response Code: " + code); String temp; String builder = "Response: "; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); while ((temp = bufferedReader.readLine()) != null) { builder = builder + (temp + "\n"); } System.out.println(builder); //logger.info(payload); client.close(); }

And and I am getting an exception at response = client.execute(httpPost);

Which is:

java.lang.IllegalStateException: Connection pool shut down at org.apache.http.util.Asserts.check(Asserts.java:34) at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:189) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:257) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:176) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) at consumer.ril.com.LocalThreadPoolExecutor.postData(LocalThreadPoolExecutor.java:80) at consumer.ril.com.LocalThreadPoolExecutor.run(LocalThreadPoolExecutor.java:40) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
java.lang.IllegalStateException: Connection pool shut down at org.apache.http.util.Asserts.check(Asserts.java:34) at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:189) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:257) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:176) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) at consumer.ril.com.LocalThreadPoolExecutor.postData(LocalThreadPoolExecutor.java:80) at consumer.ril.com.LocalThreadPoolExecutor.run(LocalThreadPoolExecutor.java:40) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)

I know where the problem is, however I am unable to determine how to solve it!

Any help would be highly appreciated!

6

1 Answer

client.close(); will close the connection of CloseableHttpClient. If you access the execute method on the second time after the connection gets closed, This error will throw.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy