protected void handleRequestException(HttpRequest proxyRequest, Exception e) throws ServletException, IOException { //abort request, according to best practice with HttpClient if (proxyRequest instanceof AbortableHttpRequest) { AbortableHttpRequest abortableHttpRequest = (AbortableHttpRequest) proxyRequest; abortableHttpRequest.abort(); } if (e instanceof RuntimeException) throw (RuntimeException)e; if (e instanceof ServletException) throw (ServletException)e; //noinspection ConstantConditions if (e instanceof IOException) throw (IOException) e; throw new RuntimeException(e); }
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
/** * Forces the release of an HttpMethod's connection in a way that will * perform all the necessary cleanup through the correct use of HttpClient * methods. * * @throws IOException */ protected void releaseConnection() throws IOException { if (!alreadyReleased) { if (!underlyingStreamConsumed) { // Underlying input stream has not been consumed, abort method // to force connection to be closed and cleaned-up. if (httpRequest instanceof AbortableHttpRequest) { AbortableHttpRequest abortableHttpRequest = (AbortableHttpRequest) httpRequest; abortableHttpRequest.abort(); } } in.close(); alreadyReleased = true; } }
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
private void abortIfInterrupted() throws IOException { if ( Thread.interrupted() ) { if ( request != null ) { request.abort(); } throw new InterruptedIOException(); } }
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
/** * Forces the release of an HttpMethod's connection in a way that will * perform all the necessary cleanup through the correct use of HttpClient * methods. * * @throws IOException */ protected void releaseConnection() throws IOException { if (!alreadyReleased) { if (!underlyingStreamConsumed) { // Underlying input stream has not been consumed, abort method // to force connection to be closed and cleaned-up. if (httpRequest instanceof AbortableHttpRequest) { AbortableHttpRequest abortableHttpRequest = (AbortableHttpRequest) httpRequest; abortableHttpRequest.abort(); } } in.close(); alreadyReleased = true; } }
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
public class MyAbortableRunnable implements Runnable { private final Object lock = new Object(); private AbortableHttpRequest request; public void abort() { synchronized(lock) { if (request != null) { request.abort(); } } } @Override public void run() { ... // create the request synchronized(lock) { this.request = ...; } ... } }
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
/** * Forces the release of an HttpMethod's connection in a way that will * perform all the necessary cleanup through the correct use of HttpClient * methods. * * @throws IOException */ protected void releaseConnection() throws IOException { if (!alreadyReleased) { if (!underlyingStreamConsumed) { // Underlying input stream has not been consumed, abort method // to force connection to be closed and cleaned-up. if (httpRequest instanceof AbortableHttpRequest) { AbortableHttpRequest abortableHttpRequest = (AbortableHttpRequest) httpRequest; abortableHttpRequest.abort(); } } in.close(); alreadyReleased = true; } }
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
abortableHttpRequest.abort();
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
abortableHttpRequest.abort();
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
abortableHttpRequest.abort();
route, userToken); if (orig instanceof AbortableHttpRequest) { ((AbortableHttpRequest) orig).setConnectionRequest(connRequest); ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
abortableHttpRequest.abort();