2017-02-14 22 views
0

Я пытаюсь подключиться с помощью SolrCloud SolrJ API, используя следующий код:Solr6.3.0 SolrJ API для базовой аутентификации

String zkHostString = "localhost:9983"; 
    String USER = "solr"; 
    String PASSWORD = "SolrRocks"; 


    CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); 
    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(USER, PASSWORD)); 
    CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build(); 

    CloudSolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).withHttpClient(httpClient).build(); 
    ((CloudSolrClient)solr).setDefaultCollection("gettingstarted"); 

Но получить ошибки Как:

Исключение в нити "главного" org.apache. solr.client.solrj.impl.CloudSolrClient $ RouteException: IOException произошло при разговоре с сервером по адресу: http://192.168.0.104:8983/solr/gettingstarted_shard2_replica1 по адресу org.apache.solr.client.solrj.impl.CloudSolrClient.directUpdate (CloudSolrClient.java:767) at org.apache .solr.client.solrj.impl.CloudSolrClient.sendRequest (CloudSolrClient.java:1173) at org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState (CloudSolrClient.java:1062) at org.apache.solr.client.solrj.impl.CloudSolrClient.request (CloudSolrClient.java:1004) at org.apache.solr.client.solrj.SolrRequest.process (SolrRequest.java:149) at org.apache.solr.client.solrj.SolrClient.add (SolrClient.java:173) at org.apache.solr. client.solrj.SolrClient.add (SolrClient.java:190) at com.app.graphiti.TextParser.main (TextParser.java:92) Вызвано: org.apache.solr.client.solrj.SolrServerException: произошло событие IOException при разговоре с сервером по адресу: http://192.168.0.104:8983/solr/gettingstarted_shard2_replica1 по адресу org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod (HttpSolrClient.java:607) at org.apache.solr.client.solrj.impl.H ttpSolrClient.request (HttpSolrClient.java:262) at org.apache.solr.client.solrj.impl.HttpSolrClient.request (HttpSolrClient.java:251) at org.apache.solr.client.solrj.impl.LBHttpSolrClient. doRequest (LBHttpSolrClient.java:435) at org.apache.solr.client.solrj.impl.LBHttpSolrClient.request (LBHttpSolrClient.java:387) at org.apache.solr.client.solrj.impl.CloudSolrClient.lambda $ directUpdate $ 0 (CloudSolrClient.java:742) at java.util.concurrent.FutureTask.run (Неизвестный источник) at org.apache.solr.common.util.ExecutorUtil $ MDCAwareThreadPoolExecutor.lambda $ execute $ 0 (ExecutorUtil.java:229) на java.util.concurrent.ThreadPoolExecutor.runWorker (Неизвестный источник) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (Неизвестный источник) at java.lang.Thread.run (Неизвестный источник) Вызвано: org.apache.http.client.ClientProtocolException at org.apache.http.impl.client.InternalHttpClient.doExecute (InternalHttpClient.java:186) at org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:55) at org.apache.solr. client.solrj.impl.HttpSolrClient.executeMethod (HttpSolrClient.java:498) ... 10 еще Вызвано: org.apache.http.client.NonRepeatableRequestException: Не удается выполнить повторный запрос с неповторяющимся объектом запроса. at org.apache.http.impl.execchain.MainClientExec.execute (MainClientExec.java:225) at org.apache.http.impl.execchain.ProtocolExec.execute (ProtocolExec.java:184) at org.apache. http.impl.execchain.RetryExec.execute (RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute (RedirectExec.java:110) at org.apache.http.impl.client. InternalHttpClient.doExecute (InternalHttpClient.java:184) ... 13 еще 16: 55: 40.289 [main-SendThread (0: 0: 0: 0: 0: 0: 0: 1: 9983)] DEBUG org.apache .zookeeper.ClientCnxn - Получил ответ ping для sessionid: 0x15a3bc76e1f000e после 1ms 16: 55: 43.624 [main-SendThread (0: 0: 0: 0: 0: 0: 0: 1: 9983)] DEBUG org.apache.zookeeper .ClientCnxn - Получил ответ ping для sessionid: 0x15a3bc76e1f000e после 1 мс 16: 55: 46.958 [main-SendThread (0: 0: 0: 0: 0: 0: 0: 1: 9983)] DEBUG org.apache.zookeeper.ClientCnxn - Получил ответ ping для sessionid: 0x15a3bc76e1f000e после 1ms \

Пожалуйста, помогите. Vrinda Davda

ответ

1

Я верю, что здесь происходит то, что SolrJ использует POST для добавления вашего документа и не выполняет превентивную аутентификацию. Раньше это было проще, но теперь, кажется, требуют использования HttpClientBuilder для предоставления одновременно CredentialsProvider и HttpRequestInterceptor, что при необходимости, обновляет TARGET_AUTH_STATE контекста запроса с новым BasicScheme и UsernamePasswordCredentials.

я провел большую часть дня борьбы с этим сам, пока я не обнаружил Brian Teggart «s 12 марта 2015 оприходование в этой теме:

Preemptive Basic authentication with Apache HttpClient 4

Это работает для меня с Solr 6.4.1 сервер и клиент SolrJ 5.3.1.