You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (JIRA)" <ji...@apache.org> on 2010/09/10 10:04:46 UTC

[jira] Resolved: (HTTPCLIENT-993) HttpClient shutdown with TIME_WAIT

     [ https://issues.apache.org/jira/browse/HTTPCLIENT-993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oleg Kalnichevski resolved HTTPCLIENT-993.
------------------------------------------

    Resolution: Invalid

Please see
http://wiki.apache.org/HttpComponents/FrequentlyAskedConnectionManagementQuestions

Oleg

> HttpClient shutdown with TIME_WAIT
> ----------------------------------
>
>                 Key: HTTPCLIENT-993
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-993
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.0.1
>         Environment: OS: OS X 10.6, RHE-4 (x86)
> Java: 1.6
>            Reporter: Thomas Huang
>
> I am new to HttpClient.  I took the example directly from the HttpClient javadoc by invoking it 10 times.  The program ran fine, but I see 10 TIME_WAIT.  This suggests the example code is not closing the socket gracefully.  The problem with TIME_WAIT is the program will eventually hang if I increase the number of iterations. 
> import org.apache.http.HttpEntity;
> import org.apache.http.HttpResponse;
> import org.apache.http.client.HttpClient;
> import org.apache.http.client.methods.HttpGet;
> import org.apache.http.impl.client.DefaultHttpClient;
> import java.io.*;
> public class TimeWait {
>   public static void test (String url) throws Exception {
>      HttpClient httpclient = new DefaultHttpClient();
>      // Prepare a request object
>      HttpGet httpget = new HttpGet(url);
>      // Execute the request
>      HttpResponse response = httpclient.execute(httpget);
>      // Examine the response status
>      System.out.println(response.getStatusLine());
>      // Get hold of the response entity
>      HttpEntity entity = response.getEntity();
>      // If the response does not enclose an entity, there is no need
>      // to worry about connection release
>      if (entity != null) {
>         InputStream instream = entity.getContent();
>         try {
>            BufferedReader reader = new BufferedReader(
>                  new InputStreamReader(instream));
>            // do something useful with the response
>            System.out.println(reader.readLine());
>         } catch (IOException ex) {
>            // In case of an IOException the connection will be released
>            // back to the connection manager automatically
>            throw ex;
>         } catch (RuntimeException ex) {
>            // In case of an unexpected exception you may want to abort
>            // the HTTP request in order to shut down the underlying
>            // connection and release it back to the connection manager.
>            httpget.abort();
>            throw ex;
>         } finally {
>            // Closing the input stream will trigger connection release
>            instream.close();
>         }
>         // When HttpClient instance is no longer needed,
>         // shut down the connection manager to ensure
>         // immediate deallocation of all system resources
>         httpclient.getConnectionManager().shutdown();
>      }
>   }
>   public static void main (String[] args) throws Exception {
>      for (int i=0; i<10; ++i) {
>         TimeWait.test("http://www.apache.org");
>      }
>   }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org