Creating a Data Source Using the DataDirect Connection Pool Manager 
  
   The following Java code example creates a data source for JDBC and registers it to a JNDI naming service. The PooledConnectionDataSource class is provided by the DataDirect com.ddtek.pool package. In the following code example, the PooledConnectionDataSource object references a JDBC data source object. Therefore, the example performs a lookup by setting the DataSourceName attribute to the JNDI name of a registered pooled data source (in this example, jdbc/OpenAccessSparkyOracle, which is the JDBC DataSource object created in section 
Creating a DataDirect OpenAccess SDK Data Source Object ).
  
 
  
    Client applications that use this data source must perform a lookup using the registered JNDI name (jdbc/SparkyOracle in this example).
  
  
   //*************************************************************
  
  
   //
  
  
   // 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 previously registered pooled data source.
  
  
   //
  
  
   // This data source registers its name as <jdbc/SparkyOracle>.
  
  
   // Client applications using pooling must perform a lookup for this name.
  
  
   //
  
  
   //************************************************************************
  
  
    
  
  
   // 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("Data Source");
  
  
    
  
  
   // Refer to a previously registered pooled data source to access
  
  
   // a ConnectionPoolDataSource object
  
  
   ds.setDataSourceName("jdbc/OpenAccessSparkyOracle");
  
  
    
  
  
   // The pool manager will be initiated with 5 physical connections
  
  
   ds.setInitialPoolSize(5);
  
  
    
  
  
   // The pool maintenance thread will make sure that there are
  
  
   // at least 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 since we choose not to see 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 the data source to JNDI naming service
  
  
   // for application to use
  
  
   ctx.bind("jdbc/SparkyOracle", ds);
  
  
    
  
  
   } catch (Exception e) {
  
  
   System.out.println(e);
  
  
   return;
  
  
   }
  
  
    
  
  
   } // Main
  
  
   } // class PoolMgrDataSourceRegisterJNDI