skip to main content
Using Connection Pooling : Connecting to a JDBC Data Source Using a Connection Pool : Complete Example of Using a Connection Pool
 

Try DataDirect Cloud Now

Complete Example of Using a Connection Pool

The following example shows Java code that looks up and uses the JNDI-registered DataDirect connection pool's PooledConnectionDataSource object. Creating the DataDirect Connection Pool provides the Java code for creating and registering the PooledConnectionDataSource object.
//********************************************************************
// Test program to look up and use a JNDI-registered data source.
//
// To run the program, specify the JNDI lookup name for the
// command-line argument, for example:
//
//    java TestDataSourceApp <jdbc/CloudSparky>
//********************************************************************
import javax.sql.*;
import java.sql.*;
import javax.naming.*;
import java.util.Hashtable;
public class TestDataSourceApp
{   public static void main(String argv[])
   {
      String strJNDILookupName = "";
      // Get the JNDI lookup name for a data source
      int nArgv = argv.length;
      if (nArgv != 1) {
         // User does not specify a JNDI lookup name for a data source,
         System.out.println(
            "Please specify a JNDI name for your data source");
         System.exit(0);
         else {
         strJNDILookupName = argv[0];
      }
      DataSource ds = null;
      Connection con = null;
      Context ctx = null;
      Hashtable env = null;
      long nStartTime, nStopTime, nElapsedTime;
      // Set up environment for creating InitialContext object
      env = new Hashtable();
      env.put(Context.INITIAL_CONTEXT_FACTORY,
         "com.sun.jndi.fscontext.RefFSContextFactory");
      env.put(Context.PROVIDER_URL, "file:c:\\JDBCDataSource");
      try {
         // Retrieve the DataSource object that is bound to the logical
         // lookup JNDI name
         ctx = new InitialContext(env);
         ds = (DataSource) ctx.lookup(strJNDILookupName);
         catch (NamingException eName) {
         System.out.println("Error looking up " +
            strJNDILookupName + ": " +eName);
         System.exit(0);
      }
      int numOfTest = 4;
      int [] nCount = {100, 100, 1000, 3000};
      for (int i = 0; i < numOfTest; i ++) {
         // Log the start time
         nStartTime = System.currentTimeMillis();
         for (int j = 1; j <= nCount[i]; j++) {
            // Get Database Connection
            try {
                con = ds.getConnection("DDusername", "DDpassword");
                // Do something with the connection
                // ...
                // Close Database Connection
                if (con != null) con.close();
                } catch (SQLException eCon) {
                System.out.println("Error getting a connection: " + eCon);
                System.exit(0);
                } // try getConnection
             } // for j loop
         // Log the end time
         nStopTime = System.currentTimeMillis();
         // Compute elapsed time
         nElapsedTime = nStopTime - nStartTime;
         System.out.println("Test number " + i + ": looping " +
            nCount[i] + " times");
         System.out.println("Elapsed Time: " + nElapsedTime + "\n");
      } // for i loop
      // All done
      System.exit(0);
      // Main
} // TestDataSourceApp
Note: To use non-pooled connections, specify the JNDI name of a registered driver DataSource object as the command-line argument when you run the preceding application. For example, the following command specifies the driver DataSource object created in Creating a Driver DataSource Object : java TestDataSourceApp jdbc/CloudSparky