2016-04-24 10 views
1

保存に私は、Apache Solrの5.2.1を使用するように春のデータのSolr 1.5.4を設定している、これは私の設定です:SolrのNonRepeatableRequestExceptionアクション

@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) 

私を助けてください。

答えて

0

これが修正されるまで、 試料が https://github.com/codelibs/solrlib/blob/master/src/main/java/org/codelibs/solr/lib/server/interceptor/PreemptiveAuthInterceptor.java

例えばにて入手可能であるcreateClient

前PreemptiveAuthInterceptorとaddRequestInterceptorを実装

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);