使用Solrj Api和Kerberized Solr创建Solr客户端

Ami*_*mar 5 solr kerberos solrj

我正在尝试使用solrj api创建用于kerberized solr的solr客户端。并且根据solrj的文档,需要HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());在代码中进行设置。

但是solrj api jar setConfigurerHttpClientUtil类内部没有函数。我正在使用来自Maven的以下依赖项。

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>7.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

是否可以使用创建solr客户端new HttpSolrClient.Builder并启用kerberisation读取jaas.config文件来进行身份验证和授权。

目前,我正在创建如下的solr客户程序;

new HttpSolrClient.Builder("solrUrlString").build()
Run Code Online (Sandbox Code Playgroud)

但是我没有看到以Krb5HttpClientConfigurer上述方式启用的选项

Ami*_*mar 6

“HttpClientUtil.setConfigurer”方法从“solr-solrj”版本 6.0.0 开始被弃用,最终从 7.0.0 版本开始被移除。

但是仍然没有使用创建 Kerberized Solr 客户端的新方法更新solrj的文档。

想出在 7.0.0 版本之后的方法:

        Builder solrClientBuilder = new HttpSolrClient.Builder("https://<hostname>/solr/<collectionName>");
        Krb5HttpClientBuilder krbBuilder = new Krb5HttpClientBuilder();
        SolrHttpClientBuilder krb5HttpClientBuilder = krbBuilder.getHttpClientBuilder(java.util.Optional.empty());
        HttpClientUtil.setHttpClientBuilder(krb5HttpClientBuilder);
        ModifiableSolrParams params = new ModifiableSolrParams();
        params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, false);
        CloseableHttpClient httpClient = HttpClientUtil.createClient(params);

        SolrClient client = solrClientBuilder.withHttpClient(httpClient).build();
Run Code Online (Sandbox Code Playgroud)