skip to main content
DataDirect tools : Connection Pool Manager : Implementing DataDirect connection pooling : Creating the connection pool
  

Try DataDirect Drivers Now
Creating the connection pool
To create a connection pool, you must create and register with JNDI a PooledConnectionDataSource object. The following Java code creates a PooledConnectionDataSource object and registers it with a JNDI naming service.
To specify the driver DataSource object to be used by the connection pool to create pooled connections, set the parameter of the DataSourceName method to the JNDI name of a registered driver DataSource object. For example, the following code sets the parameter of the DataSourceName method to the JNDI name of the driver DataSource object created in "Creating a driver DataSource object."
The PooledConnectionDataSource class is provided by the DataDirect com.ddtek.pool package. See "PooledConnectionDataSource" for a description of the methods supported by the PooledConnectionDataSource class.
//************************************************************************
// This code creates a data source and registers it to a JNDI naming service.
// This data source uses the PooledConnectionDataSource
// implementation provided by the DataDirect com.ddtek.pool package.
//
// This data source refers to a registered
// DataDirect Connect Series for JDBC driver DataSource object.
//
// This data source registers its name as <jdbc/ConnectOracle>.
//
// NOTE: To connect using a data source, the driver needs to access a JNDI data
// store to persist the data source information. To download the JNDI File
// System Service Provider, go to:
//
// http://www.oracle.com/technetwork/java/javasebusiness/downloads/
// java-archive-downloads-java-plat-419418.html#7110-jndi-1.2.1-oth-JPR
//
// Make sure that the fscontext.jar and providerutil.jar files from the
// download are on your classpath.
//************************************************************************
// From the DataDirect connection pooling package:
import com.ddtek.pool.PooledConnectionDataSource;

import javax.sql.*;
import java.sql.*;
import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;

public class PoolMgrDataSourceRegisterJNDI
{
   public static void main(String argv[])
   {
      try {
         // Set up data source reference data for naming context:
         // ----------------------------------------------------
         // Create a pooling manager's class instance that implements
         // the interface DataSource
         PooledConnectionDataSource ds = new PooledConnectionDataSource();

         ds.setDescription("Oracle DataSource");

         // Specify a registered driver DataSource object to be used
         // by this data source to create pooled connections
         ds.setDataSourceName("jdbc/ConnectOracle");

         // The pool manager will be initiated with 5 physical connections
         ds.setInitialPoolSize(5);

         // The pool maintenance thread will make sure that there are 5
         // physical connections available
         ds.setMinPoolSize(5);

         // The pool maintenance thread will check that there are no more
         // than 10 physical connections available
         ds.setMaxPoolSize(10);

         // The pool maintenance thread will wake up and check the pool
         // every 20 seconds
         ds.setPropertyCycle(20);

         // The pool maintenance thread will remove physical connections
         // that are inactive for more than 300 seconds
         ds.setMaxIdleTime(300);

         // Set tracing off because we choose not to see an output listing
         // of activities on a connection
         ds.setTracing(false);

         // Set up environment for creating initial context
         Hashtable env = new Hashtable();
         env.put(Context.INITIAL_CONTEXT_FACTORY,
            "com.sun.jndi.fscontext.RefFSContextFactory");
         env.put(Context.PROVIDER_URL, "file:c:\\JDBCDataSource");
         Context ctx = new InitialContext(env);

         // Register this data source to the JNDI naming service
         ctx.bind("jdbc/SparkyOracle", ds);

         catch (Exception e) {
         System.out.println(e);
         return;
      }
   }
}