Merge pull request #288 from matt-blanchette/master
Exposing parameters for HTTP client request pool max connections in RestfulClientFactory
This commit is contained in:
commit
e73f409800
|
@ -47,6 +47,16 @@ public interface IRestfulClientFactory {
|
|||
*/
|
||||
public static final int DEFAULT_SOCKET_TIMEOUT = 10000;
|
||||
|
||||
/**
|
||||
* Default value for {@link #getPoolMaxTotal() ()}
|
||||
*/
|
||||
public static final int DEFAULT_POOL_MAX = 20;
|
||||
|
||||
/**
|
||||
* Default value for {@link #getPoolMaxPerRoute() }
|
||||
*/
|
||||
public static final int DEFAULT_POOL_MAX_PER_ROUTE = DEFAULT_POOL_MAX;
|
||||
|
||||
/**
|
||||
* Gets the connection request timeout, in milliseconds. This is the amount of time that the HTTPClient connection
|
||||
* pool may wait for an available connection before failing. This setting typically does not need to be adjusted.
|
||||
|
@ -99,6 +109,22 @@ public interface IRestfulClientFactory {
|
|||
*/
|
||||
int getSocketTimeout();
|
||||
|
||||
/**
|
||||
* Gets the maximum number of connections allowed in the pool.
|
||||
* <p>
|
||||
* The default value for this setting is defined by {@link #DEFAULT_POOL_MAX}
|
||||
* </p>
|
||||
*/
|
||||
int getPoolMaxTotal();
|
||||
|
||||
/**
|
||||
* Gets the maximum number of connections per route allowed in the pool.
|
||||
* <p>
|
||||
* The default value for this setting is defined by {@link #DEFAULT_POOL_MAX_PER_ROUTE}
|
||||
* </p>
|
||||
*/
|
||||
int getPoolMaxPerRoute();
|
||||
|
||||
/**
|
||||
* Instantiates a new client instance
|
||||
*
|
||||
|
@ -193,4 +219,19 @@ public interface IRestfulClientFactory {
|
|||
*/
|
||||
void setSocketTimeout(int theSocketTimeout);
|
||||
|
||||
/**
|
||||
* Sets the maximum number of connections allowed in the pool.
|
||||
* <p>
|
||||
* The default value for this setting is defined by {@link #DEFAULT_POOL_MAX}
|
||||
* </p>
|
||||
*/
|
||||
void setPoolMaxTotal(int thePoolMaxTotal);
|
||||
|
||||
/**
|
||||
* Sets the maximum number of connections per route allowed in the pool.
|
||||
* <p>
|
||||
* The default value for this setting is defined by {@link #DEFAULT_POOL_MAX_PER_ROUTE}
|
||||
* </p>
|
||||
*/
|
||||
void setPoolMaxPerRoute(int thePoolMaxPerRoute);
|
||||
}
|
||||
|
|
|
@ -68,7 +68,9 @@ public class RestfulClientFactory implements IRestfulClientFactory {
|
|||
private ServerValidationModeEnum myServerValidationMode = DEFAULT_SERVER_VALIDATION_MODE;
|
||||
private int mySocketTimeout = DEFAULT_SOCKET_TIMEOUT;
|
||||
private Set<String> myValidatedServerBaseUrls = Collections.synchronizedSet(new HashSet<String>());
|
||||
|
||||
private int myPoolMaxTotal = DEFAULT_POOL_MAX;
|
||||
private int myPoolMaxPerRoute = DEFAULT_POOL_MAX_PER_ROUTE;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
|
@ -100,7 +102,9 @@ public class RestfulClientFactory implements IRestfulClientFactory {
|
|||
if (myHttpClient == null) {
|
||||
|
||||
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(5000, TimeUnit.MILLISECONDS);
|
||||
|
||||
connectionManager.setMaxTotal(myPoolMaxTotal);
|
||||
connectionManager.setDefaultMaxPerRoute(myPoolMaxPerRoute);
|
||||
|
||||
//@formatter:off
|
||||
RequestConfig defaultRequestConfig = RequestConfig.custom()
|
||||
.setSocketTimeout(mySocketTimeout)
|
||||
|
@ -149,6 +153,16 @@ public class RestfulClientFactory implements IRestfulClientFactory {
|
|||
return mySocketTimeout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPoolMaxTotal() {
|
||||
return myPoolMaxTotal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPoolMaxPerRoute() {
|
||||
return myPoolMaxPerRoute;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T extends IRestfulClient> T instantiateProxy(Class<T> theClientType, InvocationHandler theInvocationHandler) {
|
||||
T proxy = (T) Proxy.newProxyInstance(theClientType.getClassLoader(), new Class[] { theClientType }, theInvocationHandler);
|
||||
|
@ -276,6 +290,18 @@ public class RestfulClientFactory implements IRestfulClientFactory {
|
|||
myHttpClient = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void setPoolMaxTotal(int thePoolMaxTotal) {
|
||||
myPoolMaxTotal = thePoolMaxTotal;
|
||||
myHttpClient = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void setPoolMaxPerRoute(int thePoolMaxPerRoute) {
|
||||
myPoolMaxPerRoute = thePoolMaxPerRoute;
|
||||
myHttpClient = null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
void validateServerBase(String theServerBase, HttpClient theHttpClient, BaseClient theClient) {
|
||||
|
||||
|
|
Loading…
Reference in New Issue