您的位置:首页 > 理论基础 > 计算机网络

Solr / CDH 下启用kerberos 开启http 权限验证的solrj开发

2016-06-24 10:13 661 查看
前提:最近用的CDH 下solr的高可用查询,由于开启了kerberos必须要http权限验证。而且必须采用solrj的CloudSolrServer。在研究一天之后,找到可行方案。直接上干货,希望后来者有所帮助。

@Test
public void TestSolrServer() throws Exception {
System.out.println("---------------------------------------------------");

try {
DefaultHttpClient client = new DefaultHttpClient();
//采用拦截器加权限验证
client.addRequestInterceptor(new HttpRequestInterceptor() {
@Override
public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
String enc = "app1" + ":" + "bdap123";
request.addHeader("Authorization", "Basic " + Base64.encodeBase64String(enc.getBytes()));
}
});

//采用robin环方式负载
LBHttpSolrServer server = new LBHttpSolrServer(client,
"http://172.16.236.2:8983/solr/collection1_shard1_replica1");
CloudSolrServer cserver=new CloudSolrServer("172.16.236.2:2181", server);
SolrQuery query = new SolrQuery();
query.setQuery("*.*");
SolrDocumentList docs = cserver.query(query).getResults();
for (SolrDocument sd : docs) {
System.out.println(sd.getFieldValue("features"));
}

} catch (RuntimeException e) {
System.out.println(e.getMessage());
Thread.sleep(10000);
}
}


参考文献: https://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientAuthentication.java http://stackoverflow.com/questions/21696651/java-http-authentification- 401-error-with-httpclient-library http://wiki.apache.org/solr/LBHttpSolrServer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息