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]>

Reply via email to