282447 concurrent destinations in HttpClient

git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@640 7e9141cc-0065-0410-87d8-b60c137991c4
This commit is contained in:
Greg Wilkins 2009-08-05 15:34:31 +00:00
parent 2461a40229
commit 4628a6869c
2 changed files with 15 additions and 13 deletions

View File

@ -3,6 +3,7 @@ jetty-7.0.0.RC3-SNAPSHOT
+ JETTY-1074 JMX thread manipulation
+ Improved deferred authentication handling
+ 285697 extract parameters if dispatch has query
+ 282447 concurrent destinations in HttpClient
jetty-7.0.0.RC2 29 June 2009
+ 283844 Webapp / TLD errors are not clear

View File

@ -23,6 +23,8 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.KeyManager;
@ -86,7 +88,7 @@ public class HttpClient extends HttpBuffers implements Attributes
private int _connectorType = CONNECTOR_SELECT_CHANNEL;
private boolean _useDirectBuffers = true;
private int _maxConnectionsPerAddress = Integer.MAX_VALUE;
private Map<Address, HttpDestination> _destinations = new HashMap<Address, HttpDestination>();
private ConcurrentMap<Address, HttpDestination> _destinations = new ConcurrentHashMap<Address, HttpDestination>();
ThreadPool _threadPool;
Connector _connector;
private long _idleTimeout = 20000;
@ -222,22 +224,21 @@ public class HttpClient extends HttpBuffers implements Attributes
if (remote == null)
throw new UnknownHostException("Remote socket address cannot be null.");
synchronized (_destinations)
HttpDestination destination = _destinations.get(remote);
if (destination == null)
{
HttpDestination destination = _destinations.get(remote);
if (destination == null)
destination = new HttpDestination(this, remote, ssl, _maxConnectionsPerAddress);
if (_proxy != null && (_noProxy == null || !_noProxy.contains(remote.getHost())))
{
destination = new HttpDestination(this, remote, ssl, _maxConnectionsPerAddress);
if (_proxy != null && (_noProxy == null || !_noProxy.contains(remote.getHost())))
{
destination.setProxy(_proxy);
if (_proxyAuthentication != null)
destination.setProxyAuthentication(_proxyAuthentication);
}
_destinations.put(remote, destination);
destination.setProxy(_proxy);
if (_proxyAuthentication != null)
destination.setProxyAuthentication(_proxyAuthentication);
}
return destination;
HttpDestination other =_destinations.putIfAbsent(remote, destination);
if (other!=null)
destination=other;
}
return destination;
}
/* ------------------------------------------------------------ */