Example: Connection factory lookup

import javax.resource.cci.*;
import javax.resource.ResourceException;

import javax.naming.*;

import java.util.*;

/** 
 * This class is used to look up a connection factory.
 */
public class ConnectionFactoryLookup {

   String jndiName = "java:comp/env/eis/SampleConnection";
   boolean verbose = false;

   /**
    * main method
    */
   public static void main(String[] args) {
      ConnectionFactoryLookup cfl = new ConnectionFactoryLookup();
      cfl.checkParam(args);

      try {
         cfl.lookupConnectionFactory();
      }
      catch(javax.naming.NamingException ne) {
      System.out.println("Caught this " + ne);
      ne.printStackTrace(System.out);
      }
      catch(javax.resource.ResourceException re) {
      System.out.println("Caught this " + re);
      re.printStackTrace(System.out);
      }
   }

  /**
   * This method does a simple Connection Factory lookup. 
    *  
    * After the Connection Factory is looked up, a connection is got from 
   * the Connection Factory.  Then the Connection MetaData is retrieved 
    * to verfiy the connection is workable.
   */
  public void lookupConnectionFactory()
    throws javax.naming.NamingException, javax.resource.ResourceException {

    javax.resource.cci.ConnectionFactory factory = null;
    javax.resource.cci.Connection conn = null;
    javax.resource.cci.ConnectionMetaData metaData = null;

    try {
      // lookup the connection factory
         if (verbose) System.out.println("Look up the connection factory...");

      InitialContext ic = new InitialContext();
      factory = (ConnectionFactory) ic.lookup(jndiName);

      // Get connection
         if (verbose) System.out.println("Get the connection...");
      conn = factory.getConnection();

      // Get ConnectionMetaData
      metaData = conn.getMetaData();

      // Print out the metadata Informatin.
      if (verbose) System.out.println("  **  EISProductName   :" + metaData.getEISProductName());
      if (verbose) System.out.println("      EISProductVersion:" + metaData.getEISProductName());
      if (verbose) System.out.println("      UserName         :" + metaData.getUserName());

         System.out.println("Connection factory "+jndiName+" is successfully looked up");
    }
    catch (javax.naming.NamingException ne) {
      // Connection factory cannot be looked up.
      throw ne;
    }
    catch (javax.resource.ResourceException re) {
      // Something wrong with connections.
      throw re;
    }
    finally {
      if (conn != null) {
        try {
          conn.close();
        }
        catch (javax.resource.ResourceException re) {
        }
      }
    }
  }

   /**
    * Check and gather all the parameters.
    */
   private void checkParam(String args[]) {
    int i = 0, j;
    String arg;
    char flag;
      boolean help = false;

    // parse out the options
    while (i < args.length && args[i].startsWith("-")) {
      arg = args[i++];

      // get the database name
      if (arg.equalsIgnoreCase("-jndiName")) {
        if (i < args.length)
          jndiName = args[i++];
        else {
          System.err.println("-jndiName requires a J2C Connection Factory JNDI name");
          break;
        }
      }
      else { // check for verbose, cmp , bmp
        for (j = 1; j < arg.length(); j++) {
          flag = arg.charAt(j);
          switch (flag) {
            case 'v' :
            case 'V' :
              verbose = true;
              break;
                  case 'h' :
                  case 'H' :
                      help = true;
                      break;
            default :
              System.err.println("illegal option " + flag);
              break;
          }
        }
      }
    }

    if ((i != args.length) || help) {
      System.err.println("Usage: java ConnectionFactoryLookup [-v] [-h]");
      System.err.println("    [-jndiName the J2C Connection Factory JNDI name]");
      System.err.println("-v=verbose");
      System.err.println("-h=this information");
      System.exit(1);
    }
   }
   
}


 

See Also


Connection factory