Class Prototyper


  • public class Prototyper
    extends java.lang.Object
    Responsible for prototyping connections for all pools
    Since:
    Proxool 0.8
    Version:
    $Revision: 1.14 $, $Date: 2006/03/23 11:44:57 $
    Author:
    bill, $Author: billhorsman $ (current maintainer)
    • Constructor Summary

      Constructors 
      Constructor Description
      Prototyper​(org.logicalcobwebs.proxool.ConnectionPool connectionPool)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected ProxyConnection buildConnection​(int status, java.lang.String creator)
      Build a new connection
      void cancel()
      Cancel all current prototyping
      protected void checkSimultaneousBuildThrottle()
      Checks whether we are currently already building too many connections
      protected void connectionRemoved()
      This needs to be called _everytime_ a connection is removed.
      java.lang.String getAlias()
      The alias of the pool we are prototyping for
      long getConnectionCount()
      The total number of connections, including those being built right now
      protected boolean isSweepNeeded()  
      void quickRefuse()
      Give a quick answer to whether we should attempt to build a connection.
      protected boolean sweep()
      Trigger prototyping immediately
      protected void triggerSweep()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Prototyper

        public Prototyper​(org.logicalcobwebs.proxool.ConnectionPool connectionPool)
    • Method Detail

      • isSweepNeeded

        protected boolean isSweepNeeded()
      • triggerSweep

        protected void triggerSweep()
      • sweep

        protected boolean sweep()
        Trigger prototyping immediately
        Returns:
        true if something was prototyped
      • buildConnection

        protected ProxyConnection buildConnection​(int status,
                                                  java.lang.String creator)
                                           throws java.sql.SQLException,
                                                  ProxoolException
        Build a new connection
        Parameters:
        status - the initial status it will be created as (this allows us to create it as ACTIVE and avoid another thread grabbing it before we can)
        creator - for log audit
        Returns:
        the new connection
        Throws:
        java.sql.SQLException
        ProxoolException
      • connectionRemoved

        protected void connectionRemoved()
        This needs to be called _everytime_ a connection is removed.
      • checkSimultaneousBuildThrottle

        protected void checkSimultaneousBuildThrottle()
                                               throws java.sql.SQLException
        Checks whether we are currently already building too many connections
        Throws:
        java.sql.SQLException - if the throttle has been reached
      • getConnectionCount

        public long getConnectionCount()
        The total number of connections, including those being built right now
        Returns:
        connectionCount;
      • cancel

        public void cancel()
        Cancel all current prototyping
      • getAlias

        public java.lang.String getAlias()
        The alias of the pool we are prototyping for
        Returns:
        alias
      • quickRefuse

        public void quickRefuse()
                         throws java.sql.SQLException
        Give a quick answer to whether we should attempt to build a connection. This can be quicker if we are massively overloaded rather than cycling through each connection in the pool to see if it's free
        Throws:
        java.sql.SQLException - if it is a waste of time even trying to get a connaction. Just because this method doesn't throw an exception it doesn't guarantee that one will be available. There is a slight risk that we might tell the client to give up when a connection could become available in the next few milliseconds but our policy is to refuse connections quickly when overloaded.