PoolingJenkinsHttpClient.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package nju.seec.SEECdemo.logic.api.impl;
  2. import com.offbytwo.jenkins.client.JenkinsHttpClient;
  3. import org.apache.commons.lang.StringUtils;
  4. import org.apache.http.client.config.RequestConfig;
  5. import org.apache.http.impl.auth.BasicScheme;
  6. import org.apache.http.impl.client.CloseableHttpClient;
  7. import org.apache.http.impl.client.HttpClientBuilder;
  8. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  9. import org.apache.http.protocol.BasicHttpContext;
  10. import org.apache.http.protocol.HttpContext;
  11. import java.net.URI;
  12. class PoolingJenkinsHttpClient extends JenkinsHttpClient {
  13. PoolingJenkinsHttpClient(URI uri, String username, String password) {
  14. super(uri, poolingHttpClient(uri, username, password));
  15. if (StringUtils.isNotBlank(username)) {
  16. HttpContext localContext = new BasicHttpContext();
  17. localContext.setAttribute("preemptive-auth", new BasicScheme());
  18. super.setLocalContext(localContext);
  19. }
  20. }
  21. private static CloseableHttpClient poolingHttpClient(URI uri, String username, String password) {
  22. HttpClientBuilder builder = addAuthentication(HttpClientBuilder.create(), uri, username, password);
  23. PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
  24. manager.setMaxTotal(256);
  25. manager.setDefaultMaxPerRoute(128);
  26. builder.setDefaultRequestConfig(RequestConfig.custom()
  27. .setConnectTimeout(3000)
  28. .setConnectionRequestTimeout(5000)
  29. .setSocketTimeout(10000)
  30. .build())
  31. .setConnectionManager(manager);
  32. return builder.build();
  33. }
  34. }