mysticpaste.
  • language:
  • text
Report Abuse   Add Comment   Comments (0)   Raw text
public class HttpClientServiceImpl implements HttpClientService {
	
	private HttpClient client;
	private ExecutorService pool;
	
	public HttpClientServiceImpl() {
		client = new HttpClient(new MultiThreadedHttpConnectionManager());
		pool = Executors.newFixedThreadPool(10);
		((ThreadPoolExecutor)pool).prestartAllCoreThreads();
	}

	@Override
	public void doGets(HttpClientServiceObserver observer, String[] paths, HttpResponse response)
			throws Exception {
		Long start = System.currentTimeMillis();
		
		List<Future<Void>> futures = new ArrayList<Future<Void>>(10);
		
		for(String path : paths)
			futures.add(pool.submit(new GetThread(client, observer, path, response)));

		for(Future<Void> future : futures)
			future.get();
		
	}

	@Override
	public void setHost(URI host) {
		client.getHostConfiguration().setHost(host.getHost(), host.getPort(), host.getScheme());
	}
	
	private static class GetThread implements Callable<Void> {
		
		private HttpClient client;
		HttpClientServiceObserver observer;
		HttpResponse response;
		String path;
		
		public GetThread(HttpClient client, HttpClientServiceObserver observer, String path, HttpResponse response) {
			this.client = client;
			this.observer = observer;
			this.path = path;
			this.response = response;
		}

		@Override
		public Void call() throws Exception {
			Long start = System.currentTimeMillis();
			GetMethod method = new GetMethod(this.path);
			this.client.executeMethod(method);
			observer.processResponse(response, method.getResponseBodyAsStream());
			method.releaseConnection();
			Logger.getAnonymousLogger().info("Thread:" + (System.currentTimeMillis() - start));
			return null;		
		}
		
	}
	
}

 

Comments:

No Comments


Add a comment:

Name: Email: (never shared anywhere)


Raw text of paste: