spring ldap存储库项目可以访问两个不同的ldap目录吗?

时间:2016-06-09 20:30:09

标签: ldap spring-ldap

我正在尝试创建一个spring rest应用程序来返回可能来自两个不同ldap目录服务器的值。这可能是使用spring ldap存储库吗?是否可以创建多个ldaptemplate和contextsource以便我可以查询这两个目录?

1 个答案:

答案 0 :(得分:0)

您可以为每个LDAP目录配置单独的contextSource@Configuration @EnableLdapRepositories(basePackages = "com.foo.ldap1.repositories", ldapTemplateRef="ldapTemplate1") public class Ldap1Configuration { @Autowired Environment env; @Bean public LdapContextSource contextSource1() { LdapContextSource contextSource= new LdapContextSource(); contextSource.setUrl(env.getRequiredProperty("ldap1.url")); contextSource.setBase(env.getRequiredProperty("ldap1.base")); contextSource.setUserDn(env.getRequiredProperty("ldap1.user")); contextSource.setPassword(env.getRequiredProperty("ldap1.password")); return contextSource; } @Bean(name="ldapTemplate1") public LdapTemplate ldapTemplate1() { return new LdapTemplate(contextSource1()); } } bean。

您可以参考以下基本配置(JavaConfig);

@Configuration
@EnableLdapRepositories(basePackages = "com.foo.ldap2.repositories", ldapTemplateRef="ldapTemplate2")
public class Ldap2Configuration {
    @Bean
    public LdapContextSource contextSource2() {
        LdapContextSource contextSource= new LdapContextSource();
        contextSource.setUrl(env.getRequiredProperty("ldap2.url"));
        contextSource.setBase(env.getRequiredProperty("ldap2.base"));
        contextSource.setUserDn(env.getRequiredProperty("ldap2.user"));
        contextSource.setPassword(env.getRequiredProperty("ldap2.password"));
        return contextSource;
    }

    @Bean(name="ldapTemplate2")
    public LdapTemplate ldapTemplate2() {
        return new LdapTemplate(contextSource2());        
    }

}
 
@Autowired
@Qualifier("ldapTemplate1")
private LdapTemplate ldapTemplate1;

然后您可以按照以下内容引用应用程序中的每个实例;

@Autowired
@Qualifier("ldapTemplate2")
private LdapTemplate ldapTemplate2;
ldaptemplate

旁注;如果LDAP目录的数量增加,那么最好实现ldaptemplate工厂,该工厂接收连接详细信息并返回$(document).ready(function(){ /*this is using javascript*/ var table = document.getElementById("mytab1"); for (var i = 0, row; row = table.rows[i]; i++) { if(i%2==0){ /*even row*/ console.log(row) }else{ /*odd row*/ } } });个实例(How to tweak the NLTK sentence tokenizer)。