如何验证Spring LDAP连接池配置?

时间:2017-10-10 06:14:49

标签: java spring ldap connection-pooling spring-ldap

我已在Spring启动应用程序中为LDAP搜索(而非LDAP绑定)配置了LDAP连接池。这是我的LDAP配置:

@Bean
public ContextSource poolingLdapContextSource() {

    PoolingContextSource poolingContextSource = new PoolingContextSource();
    poolingContextSource.setDirContextValidator(new DefaultDirContextValidator());
    poolingContextSource.setContextSource(ldapContextSource());

    return poolingContextSource;
}


@Bean
public LdapContextSource ldapContextSource() {
    LdapContextSource contextSource = new LdapContextSource();
    contextSource.setUrls(ldapUrls.toArray(new String[]{}));
    contextSource.setUserDn(ldapUsername);
    contextSource.setPassword(ldapPassword);
    contextSource.setPooled(false);

    return contextSource;
}


@Bean
public LdapTemplate ldapTemplate() throws Exception {
    return new LdapTemplate(poolingLdapContextSource());
}

我在application.yml中启用了调试日志记录,如下所示:

org.springframework.ldap:debug

org.springframework.ldap.pool:debug

在日志中,我看到以下内容:

17-10-10 16:11:12:976 DEBUG o.s.l.c.s.AbstractContextSource - AuthenticationSource not set - using default implementation 2017-10-10 16:11:12:976 DEBUG o.s.l.c.s.AbstractContextSource - **Not using LDAP pooling** 2017-10-10 16:11:12:976 DEBUG o.s.l.c.s.AbstractContextSource - Trying provider Urls: ldap://xxx:389 ldap://yyy:389

问题:

  1. 为什么日志说"不使用LDAP池"?
  2. 如何获得有关池的更详细日志记录,以便更深入地了解Spring何时打开新连接,存在多少活动连接等?

1 个答案:

答案 0 :(得分:0)

一年或更长时间后,现在可能无法为您提供帮助,但是即使有了TRACE,org.springframework.ldaporg.springframework.security也不会再有日志记录。

您可以通过另外两种方式向自己证明。

  • 不提供非池LdapContextSource。只需以编程方式将其提供给PoolingContextSource.setContextSource()

  • 以调试方式运行服务器,并在PoolingContextSource.getContext()中放置一个断点。