By the looks of it you don't have the driver class specified properly in your server.xml. To debug this problem:
1. Check that your jdbc driver is in the <TomcatHome>/common/lib directory 2. Write a quick test class to check the driver name, driver url, username and password you are using. Something very simple like: Driver jsqlDriver = (Driver) Class.forName(jsqlDriverName).newInstance(); Connection conn = DriverManager.getConnection(driverUrl, userName, password); 3. If this works open your server.xml in <TomcatHome>/conf and compare it to the example at http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html#Database%20Connection%20Pool%20(DBCP)%20Configurations just switching the driver name, driver url, username and password with your own. 4. Open your web.xml and also check it against the example above to see if everything is properly configured -----Original Message----- From: MANOHARAN,MADHAN (HP-PaloAlto,ex1) [mailto:[EMAIL PROTECTED]] Sent: December 13, 2002 1:17 PM To: 'Jakarta Commons Users List' Subject: Connection pool nightmare! Hi guys, I bet there were many postings on this issue before. I searched the archive, but couldn't figure out a way to solve this and so posting again. I use SQL Server 2000, JDBC drivers from MS for SQL Server 2000, Tomcat 4.1.6, windows XP. I was trying to implement connection pooling and this is what I did 1) created a connection pool from tomcat admin(pointing to http://localhost:8080/admin) ). I did use the datasource driver from MS(com.microsoft.jdbcx.sqlserver.SQLServerDataSource) for the driverclassname. 2) created a web.xml with the Resource reference entry 3) created a simple java class where I lookup the context via jndi and try to get a connection. 4) created a jsp to call the java class. When I hit the jsp, it calls the java class. The java class looks up the datasource and finds it( I guess), but when I try to get the connection, I get this error java.sql.SQLException: Cannot load JDBC driver class 'null' at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.jav a:529) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:3 12) at foo.DBTest.init(DBTest.java:32) at org.apache.jsp.test_jsp._jspService(test_jsp.java:50) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >From what I see, Tomcat is not able to load the driver class for some reason. The jar files are in the classpath and also in the tomcat common lib directory. This is the method in the java program which tries to use the pool: public void init() { try{ Context ctx = new InitialContext(); if(ctx == null ) throw new Exception("Boom - No Context"); Context env = (Context)ctx.lookup("java:comp/env/jdbc"); System.out.println("Environ contxt "+env); Enumeration e = env.list(""); while(e.hasMoreElements()) { System.out.println("Environment element "+e.nextElement()); } DataSource ds =(DataSource)env.lookup("CPSDataSource"); System.out.println("Lookup successful..."); if (ds != null) { Connection conn = ds.getConnection(); if(conn != null) { foo = "Got Connection "+conn.toString(); Statement stmt = conn.createStatement(); ResultSet rst = stmt.executeQuery( "select ID from TEST"); if(rst.next()) { foo=rst.getString(2); bar=rst.getInt(3); } conn.close(); } } }catch(Exception e) { e.printStackTrace(); } } I also tried looking up "jdbc/CPSDataSource" from the "java:comp/env" context; I'm looking up the "java:comp/env/jdbc" to make sure the CPSDataSource context exists and print the context variables in the program. Could someone throw some light on whatz wrong or why this fails? Thanks, Madhan -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
