README SmartPool Version 1.5 Contents * Introduction * Installation * SmartPool 1.5 * Features from earlier releases * Features expected in future releases * System Requirements * User Documentation * Source * Java Doc Introduction Thank you for downloading this release of SmartPool 1.5. SmartPool is a ready to use Connection pooling component. It provides much more features than a conventional connection pooling component that is available on the net for free. It's basically modeled on the pooling features of an Application Server provides. The basic objective behind building this pooling component (I have just started it rather) is to provide an Application Server like features to a web server or rather any other application which needs continuous access to the database and thus needs to maintains a pool of connections. This is just the beginning of a huge effort, and would appreciate suggestions, reporting/cribbing on bugs (No program is Bug Free until the last user is dead) and suggested modifications. This releases of SmartPool focuses completely on clustered database primarily Oracle Real Applications Clusters (RAC). Installation Unzip the downloaded file. I guess you have already done it, other wise you would not be reading this README.txt. You just need to put $EXTRACT_DIR/SmartPool_1.5.jar file in your class path and you are ready to write code accessing the SmartPool API. For more information on how to use it, refer to User Documentation. Before using the component you need to build a XML (read Exaggerated Markup Language) file, believe me even a Pipe Delimited Configuration file would have served the purpose, but I chose to use XML because people around me said that such easy to generate/parse delimited format is no longer cool and XML is the hottest thing. To check on the syntax of configuration file check the pool-config.xsd and the sample file pool-config-sample.xml. If you are not familiar with XML, don't be scared of the configuration, even I am equally unfamiliar with it, edit the sample file and your job is done. SmartPool 1.5 This releases of SmartPool focuses completely on clustered database primarily Oracle Real Applications Clusters (RAC). SmartPool 1.5 tries to incorporate load balancing across instances in a RAC database with session stickiness. New Features: Support Multipools i.e. a single pool encapsulating many identical pools. This feature is primarily designed to support cluster databases like Oracle RAC. Support Global/Distributed transactions in Oracle RAC with maximum load balancing. Migrating to SmartPool 1.5: Following things have changed in 1.5 which are not backward compatible. The configuration file has been changed for good with xsd based validation rather then dtd bases validation. SmartPool now uses log4j for logging. Logging can be enabled/disabled/configured externally using log4j. However log4j libraries are required in the classpath Features from SmartPool 1.2 * Forced recovery of recently used connection SmartPool recovers least recently used connections based on configurable time out. Features from SmartPool 1.1 * Manages multiple pools Multiple pools with totally different configurations can be maintained and yet providing a Singleton single point access to the pools. * Detect leaks based on configurable time-outs Supports detecting of connection leaks based on time-outs through Connection Leak Listener Interface. Along with detecting leaks other information such as the time at which the connection was obtained, owner of the connection, last accesses time, etc is provided. * Connection pool grows when the load is high, and shrinks when there are too many free connections by closing down excessive free connections thus avoiding blocking of other accesses to the database. * Complete monitoring of the Connection pool. Well defined interfaces are provided to get the run time status of the connection pool such as current pool size, no of used connections, status of the used connections, owners of the connection. * Automatic connection recovery in case of connection failures. Every connection is validated against a query specified in the configuration file before it is leased out to the consumer. Failed connection is replaced with a new connection. Three consecutive invalid connections results in a exception thrown to the consumer. * Automatic closing of associated Statements, PreparedStatements, CallableStatements when a connection is returned back to the pool. * Wrap SmartPool to an existing pool such as a DataSource of an Application server. The role of SmartPool in this case is just to provide features like leak detection, automatic closing of Statement Objects etc. SmartPool does not maintain any pool of connections, it expects the parent pool to do the pooling * Automatic rollback, if the connection is used in a transaction and returned to pool with auto-commit set to false. * Scalable/Flexible/Configurable (J2EE buzz words again). I don't know whether it is Scalable & Flexible (I thinks it is), but it is certainly configurable with almost all the above mentioned features can be configured and even turned off if not needed. Features expected in future releases * Logging of time taken for database operations. * Hot Deployment i.e. allowing changes to be made to the pool configuration without requiring to restart the JVM. * Support for Distributed Transactions * Compliant with J2EE JDBC/pooling Specifications System Requirements * JDK 1.3 or higher. * Xerces xml parser * log4j User Documentation * $EXTRACT_DIR/doc/ Source * $EXTRACT_DIR/source Java Doc * $EXTRACT_DIR/doc/javadoc