Thread: Problem loading jdbc driver in servlet, but not in program
I have two simple programs, one is a regular java program, the other is a java servlet. When I try to run the servlet, I get "Could not load database driver". Any ideas on why this happens? -Keith Here are the programs: 1. regular java program: import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class DBPhoneLookup { public static void main (String args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException { try { Connection con = null; Statement stmt = null; ResultSet rs = null; Stringurl = "jdbc:postgresql:school"; String usr = "postgres"; String pwd = "postgres"; // Load (and therefore register) the Postgres driver Class.forName("postgresql.Driver"); // Get a connection to the database con = DriverManager.getConnection(url, usr, pwd); // Create a Statement object stmt = con.createStatement(); // Execute an SQL query, get a ResultSet rs = stmt.executeQuery("Select first_name from students"); // Display the result set as a list while (rs.next()) { System.out.println(rs.getString("first_name")); } con.close(); } catch(ClassNotFoundException e) { System.out.println("Could not load database driver: " + e.getMessage()); } } } 2. servlet program: import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class DBPhoneLookup extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Connection con = null; Statement stmt = null; ResultSet rs = null; res.setContentType("text/html"); PrintWriter out = res.getWriter(); try { String url = "jdbc:postgresql:school"; String usr = "postgres"; String pwd = "postgres"; // Load (and therefore register) the Postgres driver Class.forName("postgresql.Driver"); // Get a connection to the database con = DriverManager.getConnection(url, usr, pwd); // Create a Statement object stmt = con.createStatement(); // Execute an SQL query, get a ResultSet rs = stmt.executeQuery("Select first_name from students"); // Display the result set as a list out.println(""); out.println(""); out.println(""); while (rs.next()) { out.println(" " + rs.getString("first_name")); } out.println(" "); } catch(ClassNotFoundException e) { out.println("Could not load database driver: " + e.getMessage()); } catch(SQLException e) { out.println("SQLException caught: " + e.getMessage()); } finally { // Always close the database connection try { if (con != null) con.close(); } catch (SQLException ignored) { } } } }
Re: [INTERFACES] Problem loading jdbc driver in servlet, but not in program
From
Benoit Foucher
Date:
Hi, I think it's a configuration problem of your servlet engine. I use JServ from java.apache.org and I had to add the postresql.jar archive to the classpath environment variable in the config file of the servlet engine. Here's a part of my configuration file: # CLASSPATH environment variable passed to the JVMwrapper.classpath=/usr/local/lib/ApacheJServ.jarwrapper.classpath=/usr/local/lib/postresql.jarwrapper.classpath=/usr/local/lib/gnujsp.jar (you'll probably have to restart your web server to restart the servlet engine...) Hope this will help you... Cheers Benoit Foucher Keith/Suzanne Barron wrote: > > I have two simple programs, one is a regular java program, the other > is a java servlet. > When I try to run the servlet, I get "Could not load database driver". > Any ideas on why this > happens? > > -Keith > > Here are the programs: > > 1. regular java program: > > import java.io.*; > import java.sql.*; > import javax.servlet.*; > import javax.servlet.http.*; > > public class DBPhoneLookup { > > public static void main (String args[]) throws > ClassNotFoundException, FileNotFoundException, IOException, > SQLException { > > try { > Connection con = null; > Statement stmt = null; > ResultSet rs = null; > String url = "jdbc:postgresql:school"; > String usr = "postgres"; > String pwd = "postgres"; > > // Load (and therefore register) the Postgres driver > Class.forName("postgresql.Driver"); > > // Get a connection to the database > con = DriverManager.getConnection(url, usr, pwd); > > // Create a Statement object > stmt = con.createStatement(); > > // Execute an SQL query, get a ResultSet > rs = stmt.executeQuery("Select first_name from students"); > > // Display the result set as a list > while (rs.next()) { > System.out.println(rs.getString("first_name")); > } > > con.close(); > } > > catch(ClassNotFoundException e) { > System.out.println("Could not load database driver: " + > e.getMessage()); > } > } > } > > 2. servlet program: > > import java.io.*; > import java.sql.*; > import javax.servlet.*; > import javax.servlet.http.*; > > public class DBPhoneLookup > extends HttpServlet { public void doGet (HttpServletRequest req, > HttpServletResponse res) throws > ServletException, IOException { > > Connection con = null; > Statement stmt = null; > ResultSet rs = null; > res.setContentType("text/html"); > PrintWriter out = res.getWriter(); > > try { > String url = "jdbc:postgresql:school"; > String usr = "postgres"; > String pwd = "postgres"; > > // Load (and therefore register) the Postgres driver > Class.forName("postgresql.Driver"); > > // Get a connection to the database > con = DriverManager.getConnection(url, usr, pwd); > > // Create a Statement object > stmt = con.createStatement(); > > // Execute an SQL query, get a ResultSet > rs = stmt.executeQuery("Select first_name from students"); > > // Display the result set as a list > out.println(""); > out.println(""); > out.println(""); > while (rs.next()) { > out.println(" " + rs.getString("first_name")); > } > out.println(" "); > } > > catch(ClassNotFoundException e) { > out.println("Could not load database driver: " + > e.getMessage()); } > > catch(SQLException e) { > out.println("SQLException caught: " + e.getMessage()); } > > finally { > // Always close the database connection > try { if (con != null) con.close(); } > catch (SQLException ignored) { } > } > } > }