Class LdapBoundConnFactory

  • All Implemented Interfaces:
    ILdapConnFactory

    public class LdapBoundConnFactory
    extends java.lang.Object
    implements ILdapConnFactory
    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 Detail

      • logger

        public static org.slf4j.Logger logger
      • id

        protected java.lang.String id
      • mMinConns

        protected int mMinConns
      • mMaxConns

        protected int mMaxConns
      • mMaxResults

        protected int mMaxResults
      • PROP_LDAPCONNINFO

        public static final java.lang.String PROP_LDAPCONNINFO
        See Also:
        Constant Field Values
      • PROP_LDAPAUTHINFO

        public static final java.lang.String PROP_LDAPAUTHINFO
        See Also:
        Constant Field Values
      • PROP_ERROR_IF_DOWN

        public static final java.lang.String PROP_ERROR_IF_DOWN
        See Also:
        Constant Field Values
    • Constructor Detail

      • LdapBoundConnFactory

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

        public LdapBoundConnFactory​(java.lang.String id,
                                    boolean defErrorIfDown)
      • LdapBoundConnFactory

        public LdapBoundConnFactory​(java.lang.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.
        serverInfo - server connection info - host, port, etc.
        Throws:
        ELdapException
      • LdapBoundConnFactory

        public LdapBoundConnFactory​(java.lang.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
        serverInfo - server connection info - host, port, etc.
        Throws:
        ELdapException
    • Method Detail

      • totalConn

        public int totalConn()
        Description copied from interface: ILdapConnFactory
        Returns the number of total connections available from this pool. Includes sum of free and in use connections.
        Specified by:
        totalConn in interface ILdapConnFactory
        Returns:
        Integer number of total connections.
      • freeConn

        public int freeConn()
        Description copied from interface: ILdapConnFactory
        Returns the number of free connections available from this pool.
        Specified by:
        freeConn in interface ILdapConnFactory
        Returns:
        Integer number of free connections.
      • maxConn

        public int maxConn()
        Description copied from interface: ILdapConnFactory
        Returns the maximum number of connections available from this pool.
        Specified by:
        maxConn in interface ILdapConnFactory
        Returns:
        Integer maximum number of connections.
      • 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 interface ILdapConnFactory
        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 interface ILdapConnFactory
        Parameters:
        conn - Ldap connection object to be returned to the free list of the pool.
      • finalize

        protected void finalize()
                         throws java.lang.Exception
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Exception
      • 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 interface ILdapConnFactory
        Throws:
        ELdapException
      • getConnInfo

        public LdapConnInfo getConnInfo()
        return ldap connection info
      • getAuthInfo

        public LdapAuthInfo getAuthInfo()
        return ldap authentication info
      • setPasswordStore

        public void setPasswordStore​(IPasswordStore passwordStore)