[ 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-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org