简体   繁体   English

Solrj查询https协议错误

[英]Solrj Query In https protocol error

I am trying to use SolrJ to query using HTTPS, but I am getting an SSL connection error. 我正在尝试使用SolrJ使用HTTPS进行查询,但出现SSL连接错误。

Here is the code I tried using: 这是我尝试使用的代码:

 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrServer;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocumentList;

 import java.net.MalformedURLException;

 public class SolrJSearcher {
   public static void main(String[] args) throws MalformedURLException, SolrServerException {
     HttpSolrServer solr = new HttpSolrServer("`https://abc:8080/solr`");

     SolrQuery query = new SolrQuery();
     query.setQuery("sony digital camera");
     query.addFilterQuery("cat:electronics","store:amazon.com");
     query.setFields("id","price","merchant","cat","store");
     query.setStart(0);    
     query.set("defType", "edismax");

     QueryResponse response = solr.query(query);
     SolrDocumentList results = response.getResults();
     for (int i = 0; i < results.size(); ++i) {
       System.out.println(results.get(i));
     }
   }
 }

I'm getting the following exception: 我收到以下异常:

 Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1762)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:241)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)
    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1230)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1214)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:571)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:402)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:494)
    at org.apache.http.conn.scheme.SchemeSocketFactoryAdaptor.connectSocket(SchemeSocketFactoryAdaptor.java:65)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:609)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:444)
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:864)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
    at solrcheck.SolrJSearcher.main(SolrJSearcher.java:87)

Any working example would be a great help. 任何可行的示例都将提供很大的帮助。

HttpSolrServer use HttpClient, You may need to provide a SSL HttpClient , as documented at http://hc.apache.org/httpclient-3.x/sslguide.html HttpSolrServer使用HttpClient,您可能需要提供SSL HttpClient,如http://hc.apache.org/httpclient-3.x/sslguide.html中所述

SolrServer solrServer = new HttpSolrServer(url, httpclient);

Some related topics 一些相关主题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM