Java ApacheHttpClient建立了大量连接

Java ApacheHttpClient建立了大量连接,java,apache-httpclient-4.x,Java,Apache Httpclient 4.x,我正在使用ApacheHttpClient 4.0通过http连接到视频流(MotionJPEG)。这是我的密码: DefaultHttpClient client; HttpParams params = new BasicHttpParams(); List<String> authpref = new ArrayList<String>(); authpref.add(AuthPolicy.DIGEST); authpref.add(AuthPolicy.BAS

我正在使用ApacheHttpClient 4.0通过http连接到视频流(MotionJPEG)。这是我的密码:

DefaultHttpClient client;

HttpParams params = new BasicHttpParams();

List<String> authpref = new ArrayList<String>();
authpref.add(AuthPolicy.DIGEST);
authpref.add(AuthPolicy.BASIC);

params.setParameter("http.auth.proxy-scheme-pref", authpref);
params.setParameter("http.protocol.handle-authentication", Boolean.TRUE);

SchemeRegistry schemeRegistry = new SchemeRegistry();

schemeRegistry.register(
    new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

ClientConnectionManager connectionManager =
    new ThreadSafeClientConnManager(params, schemeRegistry);

client = new DefaultHttpClient(connectionManager, params);

client.getCredentialsProvider().setCredentials(
     new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
     new UsernamePasswordCredentials(username, password));

HttpResponse videoResponse = client.execute(new HttpGet(url));
DefaultHttpClient;
HttpParams params=新的BasicHttpParams();
List authpref=new ArrayList();
authpref.add(AuthPolicy.DIGEST);
authpref.add(AuthPolicy.BASIC);
setParameter(“http.auth.proxy scheme pref”,authpref);
setParameter(“http.protocol.handle authentication”,Boolean.TRUE);
SchemeRegistry SchemeRegistry=新SchemeRegistry();
schemeRegistry.register(
新方案(“http”,PlainSocketFactory.getSocketFactory(),80));
客户端连接管理器连接管理器=
新的ThreadSafeClientConnManager(参数、schemeRegistry);
client=新的DefaultHttpClient(connectionManager,params);
client.getCredentialsProvider().setCredentials(
新的AuthScope(AuthScope.ANY_主机、AuthScope.ANY_端口),
新用户名密码凭据(用户名、密码));
HttpResponse videoResponse=client.execute(新的HttpGet(url));
问题是client.execute()行似乎与视频流建立了数百个连接。我可以通过登录到服务器并执行netstat来了解这一点:到端口80的连接数量非常多,并且它们都处于TIME_WAIT状态

我做错什么了吗?发生什么事了


感谢您的帮助。

如果您不释放回池的连接和/或为每个请求创建新的连接池,就会发生这种情况


参考文件只说明了在直接使用HttpClientConnection时如何释放连接,而没有说明如何从HttpClient释放连接。