Class LdapBoundConnFactory

java.lang.Object
com.netscape.certsrv.ldap.LdapConnFactory
com.netscape.cmscore.ldapconn.LdapBoundConnFactory

public class LdapBoundConnFactory extends LdapConnFactory
Factory for getting LDAP Connections to a LDAP server with the same LDAP authentication. Maintains a pool of connections to the LDAP server. CMS requests are processed on a multi threaded basis. A pool of connections then must be be maintained so this access to the Ldap server can be easily managed. The min and max size of this connection pool should be configurable. Once the maximum limit of connections is exceeded, the factory should provide proper synchronization to resolve contention issues. XXX not sure how useful this is given that LDAPConnection itself can be shared by multiple threads and cloned.
  • Field Details

  • Constructor Details

    • LdapBoundConnFactory

      public LdapBoundConnFactory(String id)
      Constructor for initializing from the config store. must be followed by init(ConfigStore)
    • LdapBoundConnFactory

      public LdapBoundConnFactory(String id, boolean defErrorIfDown)
    • LdapBoundConnFactory

      public LdapBoundConnFactory(String id, int minConns, int maxConns, LdapConnInfo connInfo, LdapAuthInfo authInfo) throws ELdapException
      Constructor for LdapBoundConnFactory
      Parameters:
      minConns - minimum number of connections to have available
      maxConns - max number of connections to have available. This is the maximum number of clones of this connection or separate connections one wants to allow.
      connInfo - server connection info - host, port, etc.
      Throws:
      ELdapException
    • LdapBoundConnFactory

      public LdapBoundConnFactory(String id, int minConns, int maxConns, int maxResults, LdapConnInfo connInfo, LdapAuthInfo authInfo) throws ELdapException
      Constructor for LdapBoundConnFactory
      Parameters:
      minConns - minimum number of connections to have available
      maxConns - max number of connections to have available. This is the maximum number of clones of this connection or separate connections one wants to allow.
      maxResults - max number of results to return per query
      connInfo - server connection info - host, port, etc.
      Throws:
      ELdapException
  • Method Details

    • init

      public void init(PKISocketConfig config, PasswordStore passwordStore) throws ELdapException
      Throws:
      ELdapException
    • init

      public void init(PKISocketConfig config, LDAPConfig dbConfig, PasswordStore passwordStore) throws EBaseException, ELdapException
      Throws:
      EBaseException
      ELdapException
    • init

      public void init(PKISocketConfig config, LDAPConfig dbConfig) throws EBaseException, ELdapException
      Throws:
      EBaseException
      ELdapException
    • makeConnection

      protected void makeConnection(boolean errorIfDown) throws ELdapException
      makes the initial master connection used to clone others..
      Throws:
      ELdapException - if any error occurs.
    • getConn

      public netscape.ldap.LDAPConnection getConn() throws ELdapException
      gets a conenction from this factory. All connections obtained from the factory must be returned by returnConn() method. The best thing to do is to put returnConn in a finally clause so it always gets called. For example,
       LDAPConnection c = null;
       try {
           c = factory.getConn();
           myclass.do_something_with_c(c);
       } catch (ELdapException e) {
           handle_error_here();
       } finally {
           factory.returnConn(c);
       }
       
      Specified by:
      getConn in class LdapConnFactory
      Returns:
      Ldap connection object. connection is not available
      Throws:
      ELdapException - if any error occurs, such as a
    • getConn

      public LdapBoundConnection getConn(boolean waitForConn) throws ELdapException
      Returns a LDAP connection - a clone of the master connection. All connections should be returned to the factory using returnConn() to recycle connection objects. If not returned the limited max number is affected but if that number is large not much harm is done. Returns null if maximum number of connections reached. The best thing to do is to put returnConn in a finally clause so it always gets called. For example,
       LDAPConnection c = null;
       try {
           c = factory.getConn();
           myclass.do_something_with_c(c);
       } catch (ELdapException e) {
           handle_error_here();
       } finally {
           factory.returnConn(c);
       }
       
      Throws:
      ELdapException
    • returnConn

      public void returnConn(netscape.ldap.LDAPConnection conn)
      Teturn connection to the factory. This is mandatory after a getConn(). The best thing to do is to put returnConn in a finally clause so it always gets called. For example,
       LDAPConnection c = null;
       try {
           c = factory.getConn();
           myclass.do_something_with_c(c);
       } catch (ELdapException e) {
           handle_error_here();
       } finally {
           factory.returnConn(c);
       }
       
      Specified by:
      returnConn in class LdapConnFactory
      Parameters:
      conn - Ldap connection object to be returned to the free list of the pool.
    • reset

      public void reset() throws ELdapException
      used for disconnecting all connections and reset everything to 0 as if connections were never made. used just before a subsystem shutdown or process exit. useful only if no connections are outstanding.
      Specified by:
      reset in class LdapConnFactory
      Throws:
      ELdapException
    • shutdown

      public void shutdown() throws ELdapException
      Throws:
      ELdapException
    • getAuthInfo

      public LdapAuthInfo getAuthInfo()
      return ldap authentication info
    • getPasswordStore

      public PasswordStore getPasswordStore()
    • setPasswordStore

      public void setPasswordStore(PasswordStore passwordStore)