使用HttpSolrServer连接到Solr实例 . 尝试通过代理运行此命令,但目前配置似乎没有得到应用,它继续使用baseUrl . 这是代码:

DefaultHttpClient httpClient = new DefaultHttpClient();
ModifiableSolrParams params = new ModifiableSolrParams();
params.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 128);
params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 32);
params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, false);
params.set(HttpClientUtil.PROP_CONNECTION_TIMEOUT, this.connectionTimeout);

httpClient.getCredentialsProvider().setCredentials(
        AuthScope.ANY,
        new UsernamePasswordCredentials(proxyUsername, proxyPassword)
);

HttpHost proxy = new HttpHost(proxyUrl, proxyPort, proxyProtocol);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);


HttpSolrServer solrServer = new HttpSolrServer(baseUrl, httpClient);

也尝试过:

RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(this.connectionTimeout)
    .setConnectionRequestTimeout(this.connectionTimeout)
    .setSocketTimeout(this.connectionTimeout)
    .build();

HttpClientBuilder httpClientBuilder = HttpClients.custom()
    .setDefaultRequestConfig(requestConfig)
    .setMaxConnTotal(128)
    .setMaxConnPerRoute(32)
    .disableRedirectHandling();

HttpHost proxy = new HttpHost(proxyUrl, proxyPort, proxyProtocol);
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
    new AuthScope(proxyUrl, proxyPort, AuthScope.ANY_REALM, "basic"),
    new UsernamePasswordCredentials(proxyUsername, proxyPassword));

httpClientBuilder
    .setDefaultCredentialsProvider(credentialsProvider)
    .setTargetAuthenticationStrategy(new ProxyAuthenticationStrategy())
    .setRoutePlanner(routePlanner);

CloseableHttpClient httpClient = httpClientBuilder.build();


HttpSolrServer solrServer = new HttpSolrServer(baseUrl, httpClient);

版本

  • SolrJ 4.7.2

  • HttpClient 4.3.1