下面列出了怎么用org.apache.http.conn.ConnectionRequest的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public ConnectionRequest requestConnection(HttpRoute route, Object state) {
return new ConnectionRequest() {
@Override
public boolean cancel() {
// Nothing to do.
return false;
}
@Override
public HttpClientConnection get(final long timeout, final TimeUnit timeUnit) {
return connectionFactory.create(route, connectionConfig);
}
};
}
@Test
// @Ignore
// 2.2 IN ARTICLE
public final void whenOpeningLowLevelConnectionWithSocketTimeout_thenNoExceptions() throws InterruptedException, ExecutionException, IOException, HttpException {
basicConnManager = new BasicHttpClientConnectionManager();
context = HttpClientContext.create();
final ConnectionRequest connRequest = basicConnManager.requestConnection(route, null);
conn = connRequest.get(1000, TimeUnit.SECONDS);
if (!conn.isOpen()) {
basicConnManager.connect(conn, route, 1000, context);
}
conn.setSocketTimeout(30000);
assertTrue(conn.getSocketTimeout() == 30000);
assertTrue(conn.isOpen());
}
/**
* Returns a wrapped instance of {@link ConnectionRequest}
* to capture the necessary performance metrics.
*
* @param orig the target instance to be wrapped
*/
static ConnectionRequest wrap(ConnectionRequest orig) {
if (orig instanceof Wrapped) {
throw new IllegalArgumentException();
}
return (ConnectionRequest) Proxy.newProxyInstance(
// https://github.com/aws/aws-sdk-java/pull/48#issuecomment-29454423
ClientConnectionRequestFactory.class.getClassLoader(),
INTERFACES,
new Handler(orig));
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
try {
Object ret = method.invoke(orig, args);
return ret instanceof ConnectionRequest
? ClientConnectionRequestFactory.wrap((ConnectionRequest) ret)
: ret
;
} catch (InvocationTargetException e) {
log.debug("", e);
throw e.getCause();
}
}
/**
* Returns a wrapped instance of {@link ConnectionRequest}
* to capture the necessary performance metrics.
* @param orig the target instance to be wrapped
*/
static ConnectionRequest wrap(ConnectionRequest orig) {
if (orig instanceof Wrapped)
throw new IllegalArgumentException();
return (ConnectionRequest) Proxy.newProxyInstance(
// https://github.com/aws/aws-sdk-java/pull/48#issuecomment-29454423
ClientConnectionRequestFactory.class.getClassLoader(),
interfaces,
new Handler(orig));
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
try {
Object ret = method.invoke(orig, args);
return ret instanceof ConnectionRequest
? ClientConnectionRequestFactory.wrap((ConnectionRequest) ret)
: ret
;
} catch (InvocationTargetException e) {
log.debug("", e);
throw e.getCause();
}
}
@Override
public ConnectionRequest requestConnection(HttpRoute route, Object state) {
try {
onConnect(new URI(route.getTargetHost().toURI()));
} catch (IOException | URISyntaxException e) {
throw new RuntimeException("onConnect() callback failure: " + e, e);
}
return super.requestConnection(route, state);
}
@Test
// 2.1 IN ARTCLE
public final void whenLowLevelConnectionIsEstablished_thenNoExceptions() throws IOException, HttpException, InterruptedException, ExecutionException {
basicConnManager = new BasicHttpClientConnectionManager();
final ConnectionRequest connRequest = basicConnManager.requestConnection(route, null);
assertTrue(connRequest.get(1000, TimeUnit.SECONDS) != null);
}
Handler(ConnectionRequest orig) {
this.orig = orig;
}
@Override
public ConnectionRequest requestConnection(HttpRoute route,
Object state) {
return null;
}
Handler(ConnectionRequest orig) {
this.orig = orig;
}
@Override
public ConnectionRequest requestConnection(HttpRoute route, Object state) {
return null;
}
@Override
public ConnectionRequest requestConnection(HttpRoute route,
Object state) {
return null;
}
@Test
public void wrapOnce() {
ConnectionRequest wrapped = ClientConnectionRequestFactory
.wrap(noop);
assertTrue(wrapped instanceof Wrapped);
}
@Test(expected = IllegalArgumentException.class)
public void wrapTwice() {
ConnectionRequest wrapped = ClientConnectionRequestFactory.wrap(noop);
ClientConnectionRequestFactory.wrap(wrapped);
}
public HttpClientConnection getConn(ConnectionRequest mConn)
throws InterruptedException, ConnectionPoolTimeoutException, ExecutionException {
HttpClientConnection conn = mConn.get(30, TimeUnit.SECONDS);
return conn;
}
public ConnectionRequest getClientConnectionRequest(HttpClient httpClient, HttpRoute route, PoolingHttpClientConnectionManager cm) {
ConnectionRequest mConn = cm.requestConnection(route, HttpSolrClient.cacheKey);
return mConn;
}
@Override
public ConnectionRequest requestConnection(HttpRoute route, Object state) {
return this.fallbackConnManager.requestConnection(route, state);
}