当将Solrj与Basic auth一起使用时,出现错误“由以下原因引起:java.net.SocketException:连接重置”

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

[当使用带有基本身份验证的Solrj时,给我错误“由:java.net.SocketException:连接重置引起”(连接到测试主机),而如果我连接到本地Solr(不具有基本身份验证)或直接卷曲,则在没有问题。寻找任何建议/指针。

使用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:连接重置”吗?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
java spring solr solrj solrcloud
1个回答
0
投票

您必须以以下方式使用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

© www.soinside.com 2019 - 2024. All rights reserved.