簡體   English   中英

將 Solrj 與 Basic auth 一起使用時,出現錯誤“Caused by: java.net.SocketException: Connection reset”

[英]When using Solrj with Basic auth, giving me error "Caused by: java.net.SocketException: Connection reset"

當使用帶有基本身份驗證的 Solrj 時,出現錯誤“Caused by: java.net.SocketException: Connection reset”(連接到測試主機),而如果我連接到本地 Solr(沒有基本身份驗證)或直接 curl,它可以正常工作。 尋找任何建議/指針。

使用 curl(連接到測試主機):

    curl -i --user userName:pwd https://hostname:3001/solr/Subscriptions/select?q=*:*

不工作:(連接到測試主機)

/基本認證/


    SolrClient client = new 
    HttpSolrClient.Builder("https://hostname:3001/solr/Subscriptions").build();
    QueryRequest req = new QueryRequest(new SolrQuery("*:*"));
    req.setBasicAuthCredentials("userName", "pwd");
    QueryResponse rsp = req.process(client);

工作(沒有連接到本地主機的基本身份驗證):

    SolrClient client = new 
    HttpSolrClient.Builder("https://localhost:8993/solr/Subscriptions").build();
    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");
    query.setFields("Subscriptions-type","id", "subscriber-id");
    QueryResponse response = client.query(query);
    logger.info("Starting Solr Search to get the complete Subscriptions");
    SolrDocumentList results = response.getResults();
    logger.info("Completed Solr Search to get the complete Subscriptions");

a) 不確定為什么我會收到“java.net.SocketException: Connection reset”? b)我也看到在參考中他們使用“req.process(client)”但是對象“client”的類型是什么?

失敗堆棧跟蹤:-

Regular task started using Cron at 12/04/2019 16:04:29
2019-12-04 16:04:31.094  INFO 47033 --- [   scheduling-1] o.apache.http.impl.execchain.RetryExec   : I/O exception (java.net.SocketException) caught when processing request to {s}->https://hostname:3001: Connection reset
2019-12-04 16:04:31.094  INFO 47033 --- [   scheduling-1] o.apache.http.impl.execchain.RetryExec   : Retrying request to {s}->https://hostname:3001
2019-12-04 16:04:31.766  INFO 47033 --- [   scheduling-1] o.apache.http.impl.execchain.RetryExec   : I/O exception (java.net.SocketException) caught when processing request to {s}->https://hostname:3001: Connection reset
2019-12-04 16:04:31.766  INFO 47033 --- [   scheduling-1] o.apache.http.impl.execchain.RetryExec   : Retrying request to {s}->https://hostname:3001
2019-12-04 16:04:32.408  INFO 47033 --- [   scheduling-1] o.apache.http.impl.execchain.RetryExec   : I/O exception (java.net.SocketException) caught when processing request to {s}->https://hostname:3001: Connection reset
2019-12-04 16:04:32.408  INFO 47033 --- [   scheduling-1] o.apache.http.impl.execchain.RetryExec   : Retrying request to {s}->https://hostname:3001
2019-12-04 16:04:33.090 ERROR 47033 --- [   scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler    : Unexpected error occurred in scheduled task.

org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: https://hostname:3001/solr/Subscriptions
    at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:657) ~[solr-solrj-7.4.0.jar:7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:14]
    at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:255) ~[solr-solrj-7.4.0.jar:7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:14]
    at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:244) ~[solr-solrj-7.4.0.jar:7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:14]
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194) ~[solr-solrj-7.4.0.jar:7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:14]
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:211) ~[solr-solrj-7.4.0.jar:7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:14]
    ......
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:209) ~[na:1.8.0_45]
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_45]
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) ~[na:1.8.0_45]
    at sun.security.ssl.InputRecord.read(InputRecord.java:503) ~[na:1.8.0_45]
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:961) ~[na:1.8.0_45]
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363) ~[na:1.8.0_45]
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391) ~[na:1.8.0_45]
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375) ~[na:1.8.0_45]
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:394) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:542) ~[solr-solrj-7.4.0.jar:7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:14]
    ... 20 common frames omitted

您必須通過以下方式使用 solrj 客戶端庫訪問 solr 服務器。 您必須提供運行 solr 的系統的實際 IP 地址和端口號。

String solrServerUrl = "https://<IP Address>:<portNo>/solr/Subscriptions";//enter actual IP address and port
SolrClient client = new HttpSolrClient.Builder(solrServerUrl ).build();

如果solr服務器開啟了https,則必須參考以下參考鏈接。

https://lucene.apache.org/solr/guide/7_6/enabling-ssl.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM