使用jaas.conf与Zookeeper建立Spring Solr连接

时间:2017-04-25 08:10:21

标签: spring-boot apache-zookeeper solrj

我正在将现有的java项目迁移到Spring Boot。它通过Zookeeper连接到Solr。

启动时抛出以下错误。

org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /clusterstate.json

以下配置适用于本地,但在其他环境中,Zookeeper需要一些身份验证(jaas.conf)。如何将jaas.conf传递给Spring Boot,以便它可以正确初始化SolrClient?

@Configuration
@EnableSolrRepositories(basePackages = "com.search", multicoreSupport = true)
public class SolrConfig {

    @Value("${spring.data.solr.zk-host}")
    private String zkHost;

    @Bean
    public SolrClient solrClient() {
        return new CloudSolrClient(zkHost);
    }

    @Bean
    public SolrTemplate solrTemplate(SolrClient solrClient) throws Exception {
        return new SolrTemplate(solrClient);
    }
}

jaas.conf

Client {
       org.apache.zookeeper.server.auth.DigestLoginModule required
       username="some_username"
       password="some_password";
};

我尝试将凭据作为zkDigestUsername和zkDigestPassword的环境属性传递。在这种情况下,Spring Boot启动期间没有异常,但后续对Solr的插入/读取不起作用。

任何帮助将不胜感激。非常感谢!

1 个答案:

答案 0 :(得分:0)

我能够通过使用以下JVM参数提供jaas配置来解决此问题。

-Djava.security.auth.login.config=/etc/zookeeper/conf/jaas.conf