Bonjour, dans le cadre d'une application web, je suis entrain d'essayer de pooler une connexion ldap afin de limiter le nombre de connexion utilisée.

La connexion est configurée et initialisée de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
  env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
      env.put(InitialContext.PROVIDER_URL, "ldap://myhost:myport/baseDb");
      env.put(InitialContext.SECURITY_AUTHENTICATION, "simple");
      env.put(InitialContext.SECURITY_PRINCIPAL, login);
      env.put(InitialContext.SECURITY_CREDENTIALS, password);
      env.put("com.sun.jndi.ldap.connect.pool", "true");
         env.put("com.sun.jndi.ldap.connect.pool.maxsize","10");
         env.put("com.sun.jndi.ldap.connect.pool.timeout","10");
 
    ldapContext=new InitialLdapContext(env,null);
Le ldapContext est ensuite mis dans la session applicative (servletContext) de mon application.

Hors lorsque je l'utilise, je vois bien le message suivant s'afficher dans la log :
Create com.sun.jndi.ldap.LdapClient@76b359[IPLDAP]
Use com.sun.jndi.ldap.LdapClient@76b359

Cependant, à aucun moment je ne récupère la connexion, ce qui d'après cette page http://blogs.warwick.ac.uk/kieransha...ction_pooling/

devrait m'afficher 'Release com.sun.jndi.ldap.LdapClient@76b359'.

En forçant la fermeture, via un .close, il faut que je ré-ouvre mon contexte comme décrit ci-dessus pour faire une requête. Dans ce cas, ma connexion n'est pas réutilisée. J'obtiens une trace du type :

Create com.sun.jndi.ldap.LdapClient@a30a4e[10.83.129.88:15302]
Use com.sun.jndi.ldap.LdapClient@a30a4e
.
.
.
Release com.sun.jndi.ldap.LdapClient@2b2c81
Release com.sun.jndi.ldap.LdapClient@1c221b2
Release com.sun.jndi.ldap.LdapClient@5ec940
Release com.sun.jndi.ldap.LdapClient@1672c01
Release com.sun.jndi.ldap.LdapClient@1e6612c
Release com.sun.jndi.ldap.LdapClient@114e777
Release com.sun.jndi.ldap.LdapClient@19b97c
Release com.sun.jndi.ldap.LdapClient@11775bc
Release com.sun.jndi.ldap.LdapClient@a30a4e


Le nombre de connexion utilisée (obtenue en listant les sockets utilisées sur le serveur LDAP) et alors beaucoup plus important (12 en utilisant .close pour un seul user connecté, 2 sinon).

Peut on m'aider à identifier la méthode qui est la bonne pour effectuer un pooling efficace, quitte à ce que je doives revoir une partie de mes DAO.

Cdt