Thanks - this is exactly what I was looking for.
Now that I have my jndi-lookup in a ServiceLocator class - does anyone know how to run a Junit test (maybe using StrutsTestCase - http://strutstestcase.sourceforge.net <http://strutstestcase.sourceforge.net/> ) to test this in Tomcat? I have the what you see below, but I get an error. Any advice is appreciated, Matt Error ------------------------------------- [junit] Running com.onpoint.webapp.test.TestServiceLocator [junit] null [junit] NamingException: Cannot instantiate class: com.sun.jndi.fscontext.RefFSContextFactory jndi.properties ------------------------------------- java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory java.naming.provider.url=file:. Ant Task: ------------------------------------- <target name="test.db" depends="deploy"> <echo message="Running Service Locator Test -------------------"/> <junit printsummary="yes" haltonfailure="yes" haltonerror="yes" fork="yes"> <classpath> <pathelement path="${webapp.target}/WEB-INF/classes"/> </classpath> <classpath refid="classpath"/> <formatter type="plain" usefile="false"/> <test name="com.onpoint.webapp.test.TestServiceLocator"/> </junit> </target> ServiceLocator.java ------------------------------------- public class ServiceLocator { /** singleton's private instance */ private static ServiceLocator me; static { me = new ServiceLocator(); } private ServiceLocator() {} /** returns the Service Locator instance */ static public ServiceLocator getInstance() { return me; } private DataSource ds = null; private Connection con = null; /** Retrieves a connection from the connection pool */ //TODO: Throw a ServiceException, rather than Naming and SQL public Connection getConnection() { // Get an InitialContext from Sun's RMI JNDI Provider Context initCtx = null; try { initCtx = new InitialContext(); DataSource ds = (DataSource) initCtx.lookup(Constants.JNDI_DB); } catch( NamingException ex ) { System.err.println("NamingException: " + ex.getMessage()); } try { con = ds.getConnection(); } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } return con; } /** Closes a connection from the connection pool */ public void closeConnection(Connection con) { try { con.close(); } catch (SQLException sqle) { System.err.println("SQLException: " + sqle.getMessage()); } finally { if (con != null) { // try again try { con.close(); } catch (SQLException csqle) { // ignore } } } } } TestServiceLocator.java ------------------------------------- public void testGetConnection() throws Exception { try { con = serviceLocator.getConnection(); } catch( Exception ex ) { // client handles exception System.out.println( ex.getMessage()); fail("Unable to retrieve Service Locator Connection: " + ex); } assertTrue (con != null); } -----Original Message----- From: Ivan Siviero [mailto:[EMAIL PROTECTED]] Sent: Thursday, February 15, 2001 1:40 AM To: [EMAIL PROTECTED] Subject: tomcat datasource hi i read your post on struts-user mailing list. I use tomcat 4.0 with connection pool. Yes you can use JNDI to access it You have to specifiy the following rows in the $TOMCAT_HOME/conf/server.xml in the context of your application. <Resource name="jndiName" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jndiName"> <parameter> <name>user</name> <value>dbuserValue</value> </parameter> <parameter> <name>password</name> <value>dbPasswordValue</value> </parameter> <parameter> <name>driverClassName</name> <value>dbDriverClass</value> </parameter> <parameter> <name>driverName</name> <value>JDBCUrl</value> </parameter> </ResourceParams> to get a connection from your web application (no try catch statement reported): Context initCtx = new InitialContext(); envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup(jndiName); return ds.getConnection(); Hope this helps Ivan