Solr NonRepeatableRequestException in save action

问题描述 投票:1回答:1

我已经配置了Spring data solr 1.5.4以使用Apache Solr 5.2.1,这是我的配置:

@Bean
public SolrTemplate solrTemplate() {
    return new SolrTemplate(solrServerFactory());
}

@Bean
public SolrServerFactory solrServerFactory() {
    UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);
return new HttpSolrServerFactory(solrServer(), "", credentials, "BASIC");
}

@Bean
public SolrServer solrServer() {
    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set(HttpClientUtil.PROP_ALLOW_COMPRESSION, true);
    params.set(HttpClientUtil.PROP_BASIC_AUTH_USER, username);
    params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, password);
    params.set(HttpClientUtil.PROP_CONNECTION_TIMEOUT, 12345);
    params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, true);
    params.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 22345);
    params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 32345);
    params.set(HttpClientUtil.PROP_SO_TIMEOUT, 42345);
    params.set(HttpClientUtil.PROP_USE_RETRY, false);
    HttpClient httpClient = HttpClientUtil.createClient(params);
    HttpSolrServer httpSolrServer = new HttpSolrServer("http://" + host + ":" + port + "/solr/", httpClient);
    return httpSolrServer;
}

但是当我要保存文档时,会发生此异常:

14:28:45,863 Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.

14:28:45,863    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:660)

14:28:45,863    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486)

14:28:45,863    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)

请帮助我。

solr solrj spring-data-solr
1个回答
0
投票

直到此问题解决,在PreemptiveAuthInterceptor之前实施addRequestInterceptorcreateClient

可在PreemptiveAuthInterceptor.java获得样品

例如

    ModifiableSolrParams params = new ModifiableSolrParams();
    params.add(HttpClientUtil.PROP_BASIC_AUTH_USER, uname);
    params.add(HttpClientUtil.PROP_BASIC_AUTH_PASS, pwd);
    params.add(HttpClientUtil.PROP_BASIC_AUTH_PASS, pwd);
    HttpClientUtil.addRequestInterceptor(new PreemptiveAuthInterceptor());      
    CloseableHttpClient httpclient = HttpClientUtil.createClient(params);
© www.soinside.com 2019 - 2024. All rights reserved.