tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Gainty <mgai...@hotmail.com>
Subject RE: NullPointerException from DriverManager.getConnection() -> JdbcOdbcDriver.initialize()
Date Mon, 09 Feb 2009 03:00:06 GMT

that message does'nt make sense 

%JAVA_HOME%\jre\lib\rt.jar
contains the sun.jdbc.odbc.JdbcOdbcDriver class

please verify rt.jar is on your CLASSPATH and display which version JAVA and TC you are using..
 
Martin 
______________________________________________ 
Disclaimer and confidentiality note 
Everything in this e-mail and any attachments relates to the official business of Sender.
This transmission is of a confidential nature and Sender does not endorse distribution to
any party other than intended recipient. Sender does not necessarily endorse content contained
within this transmission. 




> Subject: NullPointerException from DriverManager.getConnection() -> JdbcOdbcDriver.initialize()
> Date: Mon, 9 Feb 2009 11:10:53 +1100
> From: nicholas.albion@vecommerce.com.au
> To: users@tomcat.apache.org
> 
> The application I'm working on has been working on my development
> machine and in production for over a year, but all of a sudden, I'm
> getting a NullPointerException from the JDBC-ODBC bridge, but only when
> I'm running the same code in Tomcat:
> 
> java.lang.NullPointerException
>  at sun.jdbc.odbc.JdbcOdbcDriver.initialize(Unknown Source)
>  at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
>  at java.sql.DriverManager.getConnection(Unknown Source)
>  at java.sql.DriverManager.getConnection(Unknown Source)
> 
> When I run the code below in JUnit, it works perfectly and no matter
> what I try, I can't reproduce the bug in JUnit
> 
> 
> Could not find database driver class: bad.driver.name
> Failed to access DB at  :no.protocol. ErrMsg: No suitable driver
> Failed to access DB at jdbc:odbc:BadUrl. ErrMsg: [Microsoft][ODBC Driver
> Manager] Data source name not found and no default driver specified
> Failed to access DB at http://google.com <http://google.com> . ErrMsg:
> No suitable driver
>     !!!!!!!!!! IT WORKED !!!!!!!!!!
> Failed to access DB at null. ErrMsg: The url cannot be null
> Could not load database driver class: null
>     !!!!!!!!!! IT WORKED !!!!!!!!!!
>     !!!!!!!!!! IT WORKED !!!!!!!!!!
> Could not load database driver class: null
> Failed to access DB at . ErrMsg: No suitable driver
> Could not find database driver class:
>     !!!!!!!!!! IT WORKED !!!!!!!!!!
>     !!!!!!!!!! IT WORKED !!!!!!!!!!
> This one is known work in production (but lately not from Tomcat on my
> PC)...
>     !!!!!!!!!! IT WORKED !!!!!!!!!!
>     from DB: testdata
> 
> 
> 
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> import java.sql.Statement;
> 
> import org.junit.Test;
> import static org.junit.Assert.*;
> 
> public class DALTest {
>         private static final String DRIVER_NAME =
> "sun.jdbc.odbc.JdbcOdbcDriver";
>         private static final String DB_URL = "jdbc:odbc:MyTestDB";
>       
>         public DALTest() {}
>               
>         @Test
>         public void testParams() {
>                 checkDB( createConnection( "bad.driver.name", DB_URL,
> "", ""), false );
>                 checkDB( createConnection( DRIVER_NAME, " :no.protocol",
> "", ""), false );
>                 checkDB( createConnection( DRIVER_NAME,
> "jdbc:odbc:BadUrl", "", ""), false );
>                 checkDB( createConnection( DRIVER_NAME,
> "http://google.com <http://google.com>  <http://google.com
> <http://google.com> > ", "", null), false );
> 
>                 checkDB( createConnection( DRIVER_NAME, DB_URL, "",
> null), false );    // blank password allowed
> 
>                 checkDB( createConnection( DRIVER_NAME, null, "", null),
> false );
>                 checkDB( createConnection( null, DB_URL, "", null),
> false );
> 
>                 checkDB( createConnection( DRIVER_NAME, DB_URL, null,
> null), false );  // blank password allowed
>                 checkDB( createConnection( DRIVER_NAME, DB_URL, null,
> null), false );  // blank password allowed
> 
>                 checkDB( createConnection( null, null, null, null),
> false );
>                 checkDB( createConnection( DRIVER_NAME, "", "", ""),
> false );
>                 checkDB( createConnection( "", DB_URL, "", null), false
> );
> 
>                 checkDB( createConnection( DRIVER_NAME, DB_URL, "",
> null), false );    // blank password allowed
>                 checkDB( createConnection( DRIVER_NAME, DB_URL, null,
> ""), false );    // blank password allowed
>         }
> 
>         @Test
>         public void testCreateConnection() {
>                 System.out.println("This one is known work in production
> (but lately not from Tomcat on my PC)...");
>                 Connection con = createConnection( DRIVER_NAME, DB_URL,
> "", "");
>                 checkDB( con, true );
>         }
>       
>         private void checkDB( Connection con, boolean printSuccessOnly )
> {
>                 if( con == null ) {
>                         return;
>                 }
>                 Statement stmt;
>                 try {
>                         stmt = con.createStatement();
>                         ResultSet result = stmt.executeQuery("SELECT *
> FROM my_test_table");
>                         if( printSuccessOnly ) {
>                                 int limit = 1;
>                                 while( result.next() && limit-- != 0 )
> System.out.println( "    from DB: " + result.getString(1) );
>                         } else {
>                                 assertTrue( "Failed to read any records
> from the reroute table", result.next() );
>                         }
>                 } catch (SQLException e) {
>                         e.printStackTrace();
>                 }
>         }
>       
>         @SuppressWarnings("unchecked")
>         protected Connection createConnection(String driver, String url,
> String username, String password)
>         {
> //              System.out.println("driver:'"+driver+"' url:'"+url+"'
> username:'"+username+"' password:'"+password+"'");
>               
>                 Class clazz;
>                 try {
>                         clazz = Class.forName(driver);
> //                      System.out.println( "Loaded class: " + driver);
> //                      clazz.newInstance();
> //                      System.out.println( "Created an instance of " +
> driver + " (not sure if we actually do anything with it)");
>                 } catch( ClassNotFoundException e ) {
>                         System.out.println("Could not find database
> driver class: " + driver);
>                         return null;
> //                      throw new RuntimeException(e);
>                 } catch( ExceptionInInitializerError e ) {
>                         System.out.println("Error initialising driver
> class: " + driver);
>                         return null;
> //                      throw e;
>                 } catch( LinkageError e ) {
>                         System.out.println("Linkage error loading
> database driver class: " + driver);
>                         return null;
> //                      throw e;
>                 } catch( Throwable e ) {
>                         System.out.println("Could not load database
> driver class: " + driver);
>                         return null;
> //                      e.printStackTrace();
> //                      throw new RuntimeException(e);
>                 }
>                                                               
>                 Connection con;
>                 try {
>                         if( username == null ) { username = ""; }
>                         if( password == null ) { password = ""; }
>                         con = DriverManager.getConnection(url, username,
> password);
>                         System.out.println("    !!!!!!!!!! IT WORKED
> !!!!!!!!!!");
>                         return con;
>                 } catch (SQLException e) {
>                         System.out.println("Failed to access DB at " +
> url + ". ErrMsg: " +e.getMessage());
>                         return null;
> //                      throw new RuntimeException(e);
>                 } catch (Throwable e) {
>                         System.out.println("Failed to create DB
> Connection. (" + e.getClass().getName() + ") ErrMsg: " +e.getMessage() +
> ", cause: " + e.getCause());
>                         return null;
> //                      throw new RuntimeException(e);
>                 }
>         }
> }
> 
> 
> 

_________________________________________________________________
Windows Liveā„¢: E-mail. Chat. Share. Get more ways to connect. 
http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t2_allup_explore_022009
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message