Tomcat DB2 connection - No suitable driver

From: Andrew Johnson (andydavidjohnson_at_hotmail.com)
Date: 10/20/04


Date: 20 Oct 2004 00:18:13 -0700

Hi,

I am trying to make a UBD DB2 7.2 connection using the Java
COM.ibm.db2.jdbc.app.DB2Driver via Tomcat 3.2.1 on Solaris (and also
on an AIX system with 3.3.1). I am attempting this either via JSP or
a servlet.

I have a separate java application that I can run from the command
line and as long as the user has the correct env variables:

DB2DIR=/opt/IBMdb2/V7.1
DB2INSTANCE=repowner
INSTHOME=/home/repowner

Then the connection is fine. I am using the same code to try and make
the connection via tomcat.

   try
    {
            Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
            // next line is printed out
            System.out.println(new java.util.Date().toString() + " DRIVER
FOUND.");
    }
    catch(ClassNotFoundException e)
        {
            System.out.println(new java.util.Date().toString() + " Error 1:
"+e);
        }
    String dbType="db2";
// String ip="10.0.0.185";
// String port="8790";
    String dbName="ppreport";
    String reason="testing db connection";
    String userName="repowner";
    String password="ilink1";
    Connection con = null;
    
    String url = "jdbc:db2:"+dbName;
    
    boolean dbConnected = false;
    
    try
        {
            System.out.println(new java.util.Date().toString() + " Connecting
to database URL = " + url + " for " + reason);
            
            
            Enumeration e = DriverManager.getDrivers();
            while (e.hasMoreElements()) {
                    Driver d = (Driver) e.nextElement();
                    // doesn't print anything here
                    System.out.println("driver is " + d.toString());
            }
            System.out.println("a1");
            // gets to here and stops!
            Driver d = DriverManager.getDriver(url);
            System.out.println("a1.1"+d.toString());
            
            con = DriverManager.getConnection(url, userName, password);
            
            java.sql.Statement stmt = con.createStatement();
            System.out.println("SETTING SCHEMA TO "+dbName);
            try {
                    stmt.execute("SET SCHEMA = "+dbName);
                    System.out.println("SCHEMA SET.");
            }
            catch (Exception ex) {
                    System.out.println("Error Setting Schema:"+ex);
            }
            
            System.out.println(new java.util.Date().toString() + " Database
connection established.XX");
            dbConnected = true;
        }
    catch(Exception e)
        {
            System.out.println(new java.util.Date().toString() + " Failed to
connect, reason : \n" + e);
            
        }

However via tomcat the driver cannot be loaded by the class loader.
The class is found, but not loaded. The error I receive is
"java.sql.SQLException: No suitable driver"

I have placed the db2java.zip (renamed as db2java.jar) in several
places to try and solve the problem (restarting Tomcat each time) but
to no avail:

/usr/apache/tomcat/common/lib/db2java.jar
.../WEB-INF/classes/db2java.jar

I have read many posts, but I can't understand how the driver will
know the correct env variables even if the class is loaded.

Any help would be much appreciated!!!

Thanks!
Andy.



Relevant Pages

  • Re: Tomcat DB2 connection - No suitable driver
    ... The attempted connection will throw the error you are seeing if the ... the DB2 Java drivers. ... > However via tomcat the driver cannot be loaded by the class loader. ...
    (comp.lang.java.databases)
  • Re: Upgrading SQL Server 2005 JDBC Driver 1.1 from SQL Server 2000 Driver, in Tomcat 5.5 env
    ... Our broken pipe error is only a warning. ... in the 5.5.16 version of tomcat. ... Please update me on your driver situation. ... Tomcat seemed to be hanging onto bad connection pool ...
    (microsoft.public.sqlserver.jdbcdriver)
  • Re: JDBC Threads Locking up
    ... driver is that internally it is calling DriverManager.getConnection! ... I suggest you stop using the Oracle driver-based pooling if Tomcat ... This is the connection pool initialization code ...
    (comp.lang.java.databases)
  • Re: ConnectionPoolDataSource + MM MySQL + Tomcat4
    ... to work with Tomcat 5.0.28 and MySQL or Oracle. ... <ResourceParams> ... in functions needing DB access, use the DataSource variable ... to create a Connection ...
    (comp.lang.java.programmer)
  • Re: How to kill a connection
    ... > We have a web application (done in java/jsp, running under tomcat ... > So, when the user do the login, we create a connection to this user. ... How do I kill an idle connection? ... username was also logged. ...
    (comp.lang.java.databases)