List of usage examples for org.apache.commons.httpclient MultiThreadedHttpConnectionManager MultiThreadedHttpConnectionManager
public MultiThreadedHttpConnectionManager()
From source file:org.craftercms.studio.impl.v1.repository.alfresco.AlfrescoContentRepository.java
/** * fire POST request to Alfresco with propert security */// w w w . j av a 2 s . c om protected String alfrescoPostRequest(String uri, Map<String, String> params, InputStream body, String bodyMimeType) throws Exception { long startTime = System.currentTimeMillis(); String serviceURL = buildAlfrescoRequestURL(uri, params); PostMethod postMethod = new PostMethod(serviceURL); postMethod.setRequestEntity(new InputStreamRequestEntity(body, bodyMimeType)); HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager()); int status = httpClient.executeMethod(postMethod); long duration = System.currentTimeMillis() - startTime; logger.debug( "TRACE: alfrescoPostRequest(String uri, Map<String, String> params, InputStream body, String bodyMimeType; {0}, {1}, {2}, {3}\n\t\tDuration: {4}", uri, params, "stream", bodyMimeType, duration); return postMethod.getResponseBodyAsString(); }
From source file:org.craftercms.studio.impl.v1.repository.alfresco.AlfrescoContentRepository.java
/** * create a multipart post request and fire to Alfresco * * @param uri/*from w ww. ja va 2 s . c om*/ * the target service URI * @param params * request parameters * @param body * post data * @param bodyMimeType * post data mime type * @param charSet * post data char set * @return response body * @throws Exception */ protected String alfrescoMultipartPostRequest(String uri, Map<String, String> params, InputStream body, String bodyMimeType, String charSet) throws Exception { long startTime = System.currentTimeMillis(); String serviceURL = buildAlfrescoRequestURL(uri, new HashMap<String, String>(0)); PostMethod postMethod = new PostMethod(serviceURL); // create multipart request parts int partSize = params.size() + 1; Part[] parts = new Part[partSize]; int index = 0; for (String key : params.keySet()) { parts[index] = new StringPart(key, params.get(key)); index++; } byte[] bytes = IOUtils.toByteArray(body); String name = params.get("filename"); PartSource partSource = new ByteArrayPartSource(name, bytes); parts[index] = new FilePart("filedata", partSource, bodyMimeType, charSet); postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams())); // connect to alfresco and get response HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager()); logger.debug("Executing multipart post request to " + uri); int status = httpClient.executeMethod(postMethod); logger.debug("Response status back from the server: " + status); long duration = System.currentTimeMillis() - startTime; logger.debug( "TRACE: alfrescoMultipartPostRequest(String uri, Map<String, String> params, InputStream body, String bodyMimeType, String charSet); {0}, {1}, {2}, {3}, {4}\n\t\tDuration: {5}", uri, params, "body", bodyMimeType, charSet, duration); return postMethod.getResponseBodyAsString(); }
From source file:org.craftercms.studio.impl.v1.repository.alfresco.AlfrescoContentRepository.java
@Override public boolean validateTicket(String ticket) { long startTime = System.currentTimeMillis(); //make me do something ticket = (ticket != null) ? ticket : getSessionTicket(); logger.debug("Validating ticket " + ticket); Map<String, String> params = new HashMap<>(); params.put("ticket", ticket); String serviceURL = null;//from ww w .ja v a 2s . c o m try { serviceURL = buildAlfrescoRequestURL("/api/login/ticket/{ticket}", params); GetMethod getMethod = new GetMethod(serviceURL); HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager()); int status = httpClient.executeMethod(getMethod); if (status == HttpStatus.SC_OK) { long duration = System.currentTimeMillis() - startTime; logger.debug("validateTicket(String ticket); {0}\n\t\tDuration: {1}", ticket, duration); return true; } } catch (Exception e) { logger.error("Error while validating authentication token", e); } long duration = System.currentTimeMillis() - startTime; logger.debug("TRACE: validateTicket(String ticket); {0}\n\t\tDuration: {1}", ticket, duration); return false; }
From source file:org.craftercms.studio.impl.v1.repository.alfresco.AlfrescoContentRepository.java
@Override public boolean logout() { long startTime = System.currentTimeMillis(); //make me do something String ticket = getSessionTicket(); logger.debug("Invalidating ticket " + ticket); Map<String, String> params = new HashMap<>(); params.put("ticket", ticket); String serviceURL = null;//from w w w. ja v a 2s .c om try { serviceURL = buildAlfrescoRequestURL("/api/login/ticket/{ticket}", params); DeleteMethod getMethod = new DeleteMethod(serviceURL); HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager()); int status = httpClient.executeMethod(getMethod); if (status == HttpStatus.SC_OK) { long duration = System.currentTimeMillis() - startTime; logger.debug("logout()\n\t\tDuration: {0}", duration); return true; } } catch (Exception e) { logger.error("Error while invalidating authentication token", e); } long duration = System.currentTimeMillis() - startTime; logger.debug("TRACE: logout()\n\t\tDuration: {0}", duration); return false; }
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 ww. ja v a2s .com 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.eclipse.ecf.internal.provider.filetransfer.httpclient.ConnectionManagerHelper.java
public synchronized void initConnectionManager(HttpClient httpClient, Map options) { if (!shouldReuseConnectionsOption()) { Trace.trace(Activator.PLUGIN_ID, "Connections are not reused. To reuse connections set system property '" //$NON-NLS-1$ + ConnectionOptions.PROP_REUSE_CONNECTIONS + "' to true."); //$NON-NLS-1$ initParameters(httpClient, new MultiThreadedHttpConnectionManager(), false, options); return;/*from ww w .j a v a 2 s . com*/ } if (connectionManager == null) { connectionManager = new MultiThreadedHttpConnectionManager(); Trace.trace(Activator.PLUGIN_ID, "Created shared connection manager."); //$NON-NLS-1$ } else { Trace.trace(Activator.PLUGIN_ID, "Reusing shared connection manager."); //$NON-NLS-1$ } initParameters(httpClient, connectionManager, true, options); }
From source file:org.eclipse.ecf.provider.filetransfer.httpclient.extended.XHttpClientRetrieveFileTransferFactory.java
public IRetrieveFileTransfer newInstance() { return new XHttpClientRetrieveFileTransfer(new HttpClient(new MultiThreadedHttpConnectionManager())); }
From source file:org.eclipse.ecr.core.storage.sql.RepositoryImpl.java
public RepositoryImpl(RepositoryDescriptor repositoryDescriptor) throws StorageException { this.repositoryDescriptor = repositoryDescriptor; sessions = new CopyOnWriteArrayList<SessionImpl>(); cachePropagator = new InvalidationsPropagator(); eventPropagator = new InvalidationsPropagator(); repositoryEventQueue = new InvalidationsQueue("repo-" + repositoryDescriptor.name); try {//from ww w .j a v a 2s .c o m schemaManager = Framework.getService(SchemaManager.class); } catch (Exception e) { throw new StorageException(e); } try { eventService = Framework.getService(EventService.class); } catch (Exception e) { throw new StorageException(e); } connectionManager = new MultiThreadedHttpConnectionManager(); HttpConnectionManagerParams params = connectionManager.getParams(); params.setDefaultMaxConnectionsPerHost(20); params.setMaxTotalConnections(20); httpClient = new HttpClient(connectionManager); binaryManager = createBinaryManager(); backend = createBackend(); createServer(); }
From source file:org.eclipse.mylyn.commons.net.WebUtil.java
/** * @since 3.1/*from w ww. jav a 2 s .com*/ */ public synchronized static HttpConnectionManager getConnectionManager() { if (connectionManager == null) { connectionManager = new MultiThreadedHttpConnectionManager(); addConnectionManager(connectionManager); } return connectionManager; }
From source file:org.eclipse.orion.server.cf.CFActivator.java
/** * Returns an HTTPClient instance that is configured to support multiple connections * in different threads. Callers must explicitly release any connections made using this * client./*from w ww . j a va2 s . co m*/ */ public synchronized HttpClient getHttpClient() { //see http://hc.apache.org/httpclient-3.x/threading.html MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager(); HttpConnectionManagerParams connectionManagerParams = connectionManager.getParams(); connectionManagerParams.setConnectionTimeout(30000); connectionManager.setParams(connectionManagerParams); HttpClientParams clientParams = new HttpClientParams(); clientParams.setConnectionManagerTimeout(300000); // 5 minutes return new HttpClient(clientParams, connectionManager); }