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 verify 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 Information.
if (verbose) System.out.println(" ** EISProductName :"
+ metaData.getEISProductName());
if (verbose) System.out.println(" EISProductVersion:"
+ metaData.getEISProductVersion());
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);
}
}
}