Example usage for org.apache.commons.httpclient MultiThreadedHttpConnectionManager shutdown

List of usage examples for org.apache.commons.httpclient MultiThreadedHttpConnectionManager shutdown

Introduction

In this page you can find the example usage for org.apache.commons.httpclient MultiThreadedHttpConnectionManager shutdown.

Prototype

boolean shutdown

To view the source code for org.apache.commons.httpclient MultiThreadedHttpConnectionManager shutdown.

Click Source Link

Usage

From source file:com.sa.npopa.samples.hbase.rest.client.Client.java

/**
 * Shut down the client. Close any open persistent connections. 
 *///from  www.  j a  v  a2 s. c  om
public void shutdown() {
    MultiThreadedHttpConnectionManager manager = (MultiThreadedHttpConnectionManager) httpClient
            .getHttpConnectionManager();
    manager.shutdown();
}

From source file:net.bpelunit.framework.control.run.TestCaseRunner.java

public void run() {
    // Pool connections to avoid socket leaks
    MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
    // Increase maximum per host, as most will use the same host (localhost)
    connectionManager.getParams().setDefaultMaxConnectionsPerHost(10);

    fClient = new HttpClient(connectionManager);

    try {/*w w  w .  j a  v a2  s  . co  m*/
        fLogger.info("Initiating testCase " + fTestCase.getName());
        fServer.startTest(this);

        final List<Thread> threads = new ArrayList<Thread>();
        startPartnerTracks(threads);
        waitForPartnerTracksOrError();

        if (fProblemOccurred || fAbortedByUser) {
            checkPartnerTracksForProblems();
            interruptAllThreads(threads);
            waitForPartnerTracks();
        } else {
            fLogger.info("Test case passed.");
        }
        fLogger.debug("All threads returned.");

        fLogger.info("Stopping testCase " + fTestCase.getName());
        fServer.stopTest(this);
    } finally {
        connectionManager.shutdown();
    }
}

From source file:com.fluidops.iwb.provider.CkanProvider.java

@Override
public void gather(List<Statement> res) throws Exception {
    // Read CKAN location and establish connection
    URL registryUrl = new URL(config.location);
    HttpURLConnection registryConnection = (HttpURLConnection) registryUrl.openConnection();
    registryConnection.setRequestMethod("GET");

    // Check if connection to CKAN could be established
    if (registryConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
        String msg = String.format("Connection to the CKAN registry could not be established. (%s, %s)",
                registryConnection.getResponseCode(), registryConnection.getResponseMessage());
        logger.info(msg);//from w  w w . j av  a  2 s.  c o m
        throw new IllegalStateException(msg);
    }
    logger.trace("Connection to CKAN established successfully.");

    String siteContent = GenUtil.readUrl(registryConnection.getInputStream());

    JSONObject groupAsJson = null;
    JSONArray packageListJsonArray = null;
    try {
        groupAsJson = new JSONObject(new JSONTokener(siteContent));
        packageListJsonArray = groupAsJson.getJSONArray("packages");
    } catch (JSONException e) {
        String msg = String.format("Returned content %s is not valid JSON. Check if the registry URL is valid.",
                siteContent);
        logger.debug(msg);
        throw new IllegalStateException(msg);
    }
    logger.trace("Extracted JSON from CKAN successfully");

    // Create metadata about LOD catalog
    res.add(ProviderUtils.createStatement(CKAN.CKAN_CATALOG, RDF.TYPE, Vocabulary.DCAT.CATALOG));
    res.add(ProviderUtils.createStatement(CKAN.CKAN_CATALOG, RDFS.LABEL, CKAN.CKAN_CATALOG_LABEL));

    // Extract metadata for individual data sets listed in CKAN
    MultiThreadedHttpConnectionManager connectionManager = null;
    ExecutorService pool = null;
    try {
        pool = Executors.newFixedThreadPool(10);
        connectionManager = new MultiThreadedHttpConnectionManager();
        HttpClient client = new HttpClient(connectionManager);

        List<Statement> synchedList = Collections.synchronizedList(res);
        for (int i = 0; i < packageListJsonArray.length(); i++) {
            String host = "http://www.ckan.net/package/" + packageListJsonArray.get(i).toString();
            String baseUri = findBaseUri(
                    "http://www.ckan.net/api/rest/package/" + packageListJsonArray.get(i).toString());
            baseUri = (baseUri == null) ? host : baseUri;
            pool.execute(new MetadataReader(client, host, baseUri, CKAN.CKAN_CATALOG, synchedList));
        }
    } finally {
        if (pool != null) {
            pool.shutdown();
            pool.awaitTermination(4, TimeUnit.HOURS);
        }
        if (connectionManager != null)
            connectionManager.shutdown();
    }
}

From source file:org.apache.ivy.util.url.HttpClientHandler.java

private HttpClient getClient() {
    if (httpClient == null) {
        final MultiThreadedHttpConnectionManager connManager = new MultiThreadedHttpConnectionManager();
        httpClient = new HttpClient(connManager);

        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            public void run() {
                connManager.shutdown();
            }/*from  w  w w.  j a v  a2 s. c  om*/
        }));

        List authPrefs = new ArrayList(3);
        authPrefs.add(AuthPolicy.DIGEST);
        authPrefs.add(AuthPolicy.BASIC);
        authPrefs.add(AuthPolicy.NTLM); // put it at the end to give less priority (IVY-213)
        httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);

        if (useProxy()) {
            httpClient.getHostConfiguration().setProxy(proxyHost, proxyPort);
            if (useProxyAuthentication()) {
                httpClient.getState().setProxyCredentials(
                        new AuthScope(proxyHost, proxyPort, AuthScope.ANY_REALM),
                        createCredentials(proxyUserName, proxyPasswd));
            }
        }

        // user-agent
        httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT, getUserAgent());

        // authentication
        httpClient.getParams().setParameter(CredentialsProvider.PROVIDER, new IvyCredentialsProvider());
    }

    return httpClient;
}

From source file:org.apache.sshd.common.forward.PortForwardingLoadTest.java

@Test
public void testForwardingOnLoad() throws Exception {
    //        final String path = "/history/recent/troubles/";
    //        final String host = "www.bbc.co.uk";
    //        final String path = "";
    //        final String host = "www.bahn.de";
    final String path = "";
    final String host = TEST_LOCALHOST;
    final int nbThread = 2;
    final int nbDownloads = 2;
    final int nbLoops = 2;

    StringBuilder resp = new StringBuilder();
    resp.append("<html><body>\n");
    for (int i = 0; i < 1000; i++) {
        resp.append("0123456789\n");
    }/* w w  w.  j a v  a  2 s.  co m*/
    resp.append("</body></html>\n");
    final StringBuilder sb = new StringBuilder();
    sb.append("HTTP/1.1 200 OK").append('\n');
    sb.append("Content-Type: text/HTML").append('\n');
    sb.append("Content-Length: ").append(resp.length()).append('\n');
    sb.append('\n');
    sb.append(resp);
    NioSocketAcceptor acceptor = new NioSocketAcceptor();
    acceptor.setHandler(new IoHandlerAdapter() {
        @Override
        public void messageReceived(IoSession session, Object message) throws Exception {
            session.write(IoBuffer.wrap(sb.toString().getBytes(StandardCharsets.UTF_8)));
        }
    });
    acceptor.setReuseAddress(true);
    acceptor.bind(new InetSocketAddress(0));
    final int port = acceptor.getLocalAddress().getPort();

    Session session = createSession();
    try {
        final int forwardedPort1 = session.setPortForwardingL(0, host, port);
        final int forwardedPort2 = Utils.getFreePort();
        session.setPortForwardingR(forwardedPort2, TEST_LOCALHOST, forwardedPort1);
        outputDebugMessage("URL: http://localhost %s", forwardedPort2);

        final CountDownLatch latch = new CountDownLatch(nbThread * nbDownloads * nbLoops);
        final Thread[] threads = new Thread[nbThread];
        final List<Throwable> errors = new CopyOnWriteArrayList<>();
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(getCurrentTestName() + "[" + i + "]") {
                @Override
                public void run() {
                    for (int j = 0; j < nbLoops; j++) {
                        final MultiThreadedHttpConnectionManager mgr = new MultiThreadedHttpConnectionManager();
                        final HttpClient client = new HttpClient(mgr);
                        client.getHttpConnectionManager().getParams().setDefaultMaxConnectionsPerHost(100);
                        client.getHttpConnectionManager().getParams().setMaxTotalConnections(1000);
                        for (int i = 0; i < nbDownloads; i++) {
                            try {
                                checkHtmlPage(client, new URL("http://localhost:" + forwardedPort2 + path));
                            } catch (Throwable e) {
                                errors.add(e);
                            } finally {
                                latch.countDown();
                                System.err.println("Remaining: " + latch.getCount());
                            }
                        }
                        mgr.shutdown();
                    }
                }
            };
        }
        for (Thread thread : threads) {
            thread.start();
        }
        latch.await();
        for (Throwable t : errors) {
            t.printStackTrace();
        }
        assertEquals(0, errors.size());
    } finally {
        session.disconnect();
    }
}

From source file:org.apache.sshd.PortForwardingLoadTest.java

@Test
public void testForwardingOnLoad() throws Exception {
    //        final String path = "/history/recent/troubles/";
    //        final String host = "www.bbc.co.uk";
    //        final String path = "";
    //        final String host = "www.bahn.de";
    final String path = "";
    final String host = "localhost";
    final int nbThread = 2;
    final int nbDownloads = 2;
    final int nbLoops = 2;

    final int port = getFreePort();
    StringBuilder resp = new StringBuilder();
    resp.append("<html><body>\n");
    for (int i = 0; i < 1000; i++) {
        resp.append("0123456789\n");
    }/*from   ww w  .  ja v  a  2s . c om*/
    resp.append("</body></html>\n");
    final StringBuilder sb = new StringBuilder();
    sb.append("HTTP/1.1 200 OK").append('\n');
    sb.append("Content-Type: text/HTML").append('\n');
    sb.append("Content-Length: ").append(resp.length()).append('\n');
    sb.append('\n');
    sb.append(resp);
    NioSocketAcceptor acceptor = new NioSocketAcceptor();
    acceptor.setHandler(new IoHandlerAdapter() {
        @Override
        public void messageReceived(IoSession session, Object message) throws Exception {
            session.write(IoBuffer.wrap(sb.toString().getBytes()));
        }
    });
    acceptor.setReuseAddress(true);
    acceptor.bind(new InetSocketAddress(port));

    Session session = createSession();

    final int forwardedPort1 = getFreePort();
    final int forwardedPort2 = getFreePort();
    System.err.println("URL: http://localhost:" + forwardedPort2);

    session.setPortForwardingL(forwardedPort1, host, port);
    session.setPortForwardingR(forwardedPort2, "localhost", forwardedPort1);

    final CountDownLatch latch = new CountDownLatch(nbThread * nbDownloads * nbLoops);

    final Thread[] threads = new Thread[nbThread];
    final List<Throwable> errors = new CopyOnWriteArrayList<Throwable>();
    for (int i = 0; i < threads.length; i++) {
        threads[i] = new Thread() {
            public void run() {
                for (int j = 0; j < nbLoops; j++) {
                    final MultiThreadedHttpConnectionManager mgr = new MultiThreadedHttpConnectionManager();
                    final HttpClient client = new HttpClient(mgr);
                    client.getHttpConnectionManager().getParams().setDefaultMaxConnectionsPerHost(100);
                    client.getHttpConnectionManager().getParams().setMaxTotalConnections(1000);
                    for (int i = 0; i < nbDownloads; i++) {
                        try {
                            checkHtmlPage(client, new URL("http://localhost:" + forwardedPort2 + path));
                        } catch (Throwable e) {
                            errors.add(e);
                        } finally {
                            latch.countDown();
                            System.err.println("Remaining: " + latch.getCount());
                        }
                    }
                    mgr.shutdown();
                }
            }
        };
    }
    for (int i = 0; i < threads.length; i++) {
        threads[i].start();
    }
    latch.await();
    for (Throwable t : errors) {
        t.printStackTrace();
    }
    assertEquals(0, errors.size());
}

From source file:org.apache.sshd.PortForwardingTest.java

@Test
@Ignore//from w w  w . ja va 2  s . c o  m
public void testForwardingOnLoad() throws Exception {
    //        final String path = "/history/recent/troubles/";
    //        final String host = "www.bbc.co.uk";
    //        final String path = "";
    //        final String host = "www.bahn.de";
    final String path = "";
    final String host = "localhost";
    final int nbThread = 2;
    final int nbDownloads = 2;
    final int nbLoops = 2;

    final int port = getFreePort();
    StringBuilder resp = new StringBuilder();
    resp.append("<html><body>\n");
    for (int i = 0; i < 1000; i++) {
        resp.append("0123456789\n");
    }
    resp.append("</body></html>\n");
    final StringBuilder sb = new StringBuilder();
    sb.append("HTTP/1.1 200 OK").append('\n');
    sb.append("Content-Type: text/HTML").append('\n');
    sb.append("Content-Length: ").append(resp.length()).append('\n');
    sb.append('\n');
    sb.append(resp);
    NioSocketAcceptor acceptor = new NioSocketAcceptor();
    acceptor.setHandler(new IoHandlerAdapter() {
        @Override
        public void messageReceived(IoSession session, Object message) throws Exception {
            session.write(IoBuffer.wrap(sb.toString().getBytes()));
        }
    });
    acceptor.setReuseAddress(true);
    acceptor.bind(new InetSocketAddress(port));

    Session session = createSession();

    final int forwardedPort1 = getFreePort();
    final int forwardedPort2 = getFreePort();
    System.err.println("URL: http://localhost:" + forwardedPort2);

    session.setPortForwardingL(forwardedPort1, host, port);
    session.setPortForwardingR(forwardedPort2, "localhost", forwardedPort1);

    final CountDownLatch latch = new CountDownLatch(nbThread * nbDownloads * nbLoops);

    final Thread[] threads = new Thread[nbThread];
    final List<Throwable> errors = new CopyOnWriteArrayList<Throwable>();
    for (int i = 0; i < threads.length; i++) {
        threads[i] = new Thread() {
            public void run() {
                for (int j = 0; j < nbLoops; j++) {
                    final MultiThreadedHttpConnectionManager mgr = new MultiThreadedHttpConnectionManager();
                    final HttpClient client = new HttpClient(mgr);
                    client.getHttpConnectionManager().getParams().setDefaultMaxConnectionsPerHost(100);
                    client.getHttpConnectionManager().getParams().setMaxTotalConnections(1000);
                    for (int i = 0; i < nbDownloads; i++) {
                        try {
                            checkHtmlPage(client, new URL("http://localhost:" + forwardedPort2 + path));
                        } catch (Throwable e) {
                            errors.add(e);
                        } finally {
                            latch.countDown();
                            System.err.println("Remaining: " + latch.getCount());
                        }
                    }
                    mgr.shutdown();
                }
            }
        };
    }
    for (int i = 0; i < threads.length; i++) {
        threads[i].start();
    }
    latch.await();
    for (Throwable t : errors) {
        t.printStackTrace();
    }
    assertEquals(0, errors.size());
}

From source file:org.codehaus.httpcache4j.client.HTTPClientResponseResolver.java

public void shutdown() {
    HttpConnectionManager connmanager = client.getHttpConnectionManager();
    if (connmanager instanceof MultiThreadedHttpConnectionManager) {
        MultiThreadedHttpConnectionManager manager = (MultiThreadedHttpConnectionManager) connmanager;
        manager.shutdown();
    }//  ww  w  .j  av a  2s .c o  m
}

From source file:org.cryptomator.frontend.webdav.WebDavServerTest.java

@Test
public void testMultipleGetWithRangeAsync() throws IOException, URISyntaxException, InterruptedException {
    final String testResourceUrl = servletRoot + "/foo.txt";

    // prepare 8MiB test data:
    final byte[] plaintextData = new byte[2097152 * Integer.BYTES];
    final ByteBuffer plaintextDataByteBuffer = ByteBuffer.wrap(plaintextData);
    for (int i = 0; i < 2097152; i++) {
        plaintextDataByteBuffer.putInt(i);
    }//from w w  w. j  ava  2  s.c  o  m
    try (WritableFile w = fs.file("foo.txt").openWritable()) {
        plaintextDataByteBuffer.flip();
        w.write(plaintextDataByteBuffer);
    }

    final MultiThreadedHttpConnectionManager cm = new MultiThreadedHttpConnectionManager();
    cm.getParams().setDefaultMaxConnectionsPerHost(50);
    final HttpClient client = new HttpClient(cm);

    // multiple async range requests:
    final List<ForkJoinTask<?>> tasks = new ArrayList<>();
    final Random generator = new Random(System.currentTimeMillis());

    final AtomicBoolean success = new AtomicBoolean(true);

    // 10 full interrupted requests:
    for (int i = 0; i < 10; i++) {
        final ForkJoinTask<?> task = ForkJoinTask.adapt(() -> {
            try {
                final HttpMethod getMethod = new GetMethod(testResourceUrl);
                final int statusCode = client.executeMethod(getMethod);
                if (statusCode != 200) {
                    LOG.error("Invalid status code for interrupted full request");
                    success.set(false);
                }
                getMethod.getResponseBodyAsStream().read();
                getMethod.getResponseBodyAsStream().close();
                getMethod.releaseConnection();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });
        tasks.add(task);
    }

    // 50 crappy interrupted range requests:
    for (int i = 0; i < 50; i++) {
        final int lower = generator.nextInt(plaintextData.length);
        final ForkJoinTask<?> task = ForkJoinTask.adapt(() -> {
            try {
                final HttpMethod getMethod = new GetMethod(testResourceUrl);
                getMethod.addRequestHeader("Range", "bytes=" + lower + "-");
                final int statusCode = client.executeMethod(getMethod);
                if (statusCode != 206) {
                    LOG.error("Invalid status code for interrupted range request");
                    success.set(false);
                }
                getMethod.getResponseBodyAsStream().read();
                getMethod.getResponseBodyAsStream().close();
                getMethod.releaseConnection();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });
        tasks.add(task);
    }

    // 50 normal open range requests:
    for (int i = 0; i < 50; i++) {
        final int lower = generator.nextInt(plaintextData.length - 512);
        final int upper = plaintextData.length - 1;
        final ForkJoinTask<?> task = ForkJoinTask.adapt(() -> {
            try {
                final HttpMethod getMethod = new GetMethod(testResourceUrl);
                getMethod.addRequestHeader("Range", "bytes=" + lower + "-");
                final byte[] expected = Arrays.copyOfRange(plaintextData, lower, upper + 1);
                final int statusCode = client.executeMethod(getMethod);
                final byte[] responseBody = new byte[upper - lower + 10];
                final int bytesRead = IOUtils.read(getMethod.getResponseBodyAsStream(), responseBody);
                getMethod.releaseConnection();
                if (statusCode != 206) {
                    LOG.error("Invalid status code for open range request");
                    success.set(false);
                } else if (upper - lower + 1 != bytesRead) {
                    LOG.error("Invalid response length for open range request");
                    success.set(false);
                } else if (!Arrays.equals(expected, Arrays.copyOfRange(responseBody, 0, bytesRead))) {
                    LOG.error("Invalid response body for open range request");
                    success.set(false);
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });
        tasks.add(task);
    }

    // 200 normal closed range requests:
    for (int i = 0; i < 200; i++) {
        final int pos1 = generator.nextInt(plaintextData.length - 512);
        final int pos2 = pos1 + 512;
        final ForkJoinTask<?> task = ForkJoinTask.adapt(() -> {
            try {
                final int lower = Math.min(pos1, pos2);
                final int upper = Math.max(pos1, pos2);
                final HttpMethod getMethod = new GetMethod(testResourceUrl);
                getMethod.addRequestHeader("Range", "bytes=" + lower + "-" + upper);
                final byte[] expected = Arrays.copyOfRange(plaintextData, lower, upper + 1);
                final int statusCode = client.executeMethod(getMethod);
                final byte[] responseBody = new byte[upper - lower + 1];
                final int bytesRead = IOUtils.read(getMethod.getResponseBodyAsStream(), responseBody);
                getMethod.releaseConnection();
                if (statusCode != 206) {
                    LOG.error("Invalid status code for closed range request");
                    success.set(false);
                } else if (upper - lower + 1 != bytesRead) {
                    LOG.error("Invalid response length for closed range request");
                    success.set(false);
                } else if (!Arrays.equals(expected, Arrays.copyOfRange(responseBody, 0, bytesRead))) {
                    LOG.error("Invalid response body for closed range request");
                    success.set(false);
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });
        tasks.add(task);
    }

    Collections.shuffle(tasks, generator);

    final ForkJoinPool pool = new ForkJoinPool(4);
    for (ForkJoinTask<?> task : tasks) {
        pool.execute(task);
    }
    for (ForkJoinTask<?> task : tasks) {
        task.join();
    }
    pool.shutdown();
    cm.shutdown();

    Assert.assertTrue(success.get());
}

From source file:org.jasig.portal.services.MultiThreadedHttpConnectionManagerFactoryBean.java

@Override
protected void destroyInstance(MultiThreadedHttpConnectionManager instance) throws Exception {
    //TODO wrap in watcher to timeout the shutdown
    instance.shutdown();
}