I am trying to run the following servlet.

*************************************************************************
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;

/**
 * This class demonstrates how JDBC can be used within a servlet. It
uses
 * initialization parameters (which come from the web.xml configuration
file)
 * to create a single JDBC database connection, which is shared by all
clients
 * of the servlet.
 ***/
public class Query extends HttpServlet {
    Connection db; // This is the shared JDBC connection
    
    public void init() throws ServletException {
        // Read initialization parameters from the web.xml file
        ServletConfig config = getServletConfig();
        String driverClassName =
config.getInitParameter("driverClassName");
        String url = config.getInitParameter("url");
        String username = config.getInitParameter("username");
        String password = config.getInitParameter("password");
        
        // Use those init params to establish a connection to the
database
        // If anything goes wrong, log it, wrap the exception and
re-throw it
        try {
            Class.forName(driverClassName);
            db = DriverManager.getConnection(url, username, password);
        }
        catch (Exception e) {
            log("Can't create DB connection", e);
            throw new ServletException("Query: can't initialize: " +
e.getMessage(), e);
        }
    }
    
    /** Close the database connection when the servlet is unloaded */
    public void destroy() {
        try{ db.close(); }          // Try to close the connection
        catch (SQLException e) {}   // Ignore errors; at least we
tried!
    }
    
    public void doGet(HttpServletRequest request, HttpServletResponse
response) throws IOException, ServletException
    {
        response.setContentType("text/html");   // We'returnoutputting
HTML
        PrintWriter out = response.getWriter(); // Where to output it
to
        
        // Output document header and a form for entering SQL queries
        // When the form is submitted, this servlet is reloaded
        out.println("<HEAD><TITLE>DB Query</TITLE></HEAD>\n" +  
                    "<BODY BGCOLOR=white><H1>DB Query</H1>\n" +
                    "<FORM><B>Query:</B><INPUT NAME='q'>" +
                    "<INPUT TYPE=submit></FORM>");
        
        // See if a query was specified in this request.
        String query = request.getParameter("q");
        if (query != null) {
            // display the query text as a page heading
            out.println("<H1>" + query + "</H1>");
            
            // Now try to execute the query and display the results in
a table
            Statement statement = null; // An object to execute the
query 
            try {
                // Create a statement to use
                statement = db.createStatement();
                // Use it to execute the specified query, and get the
result set
                ResultSet results = statement.executeQuery(query);
                // Ask for extra information about the results
                ResultSetMetaData metadata = results.getMetaData();
                // How many columns are there in the results?
                int numcols = metadata.getColumnCount();
                
                // Begin a table, and output a header row of column
names
                out.println("<TABLE BORDER=2><TR>");
                for(int i = 0; i < numcols; i++)
                    out.print("<TH>" + metadata.getColumnLabel(i+1) +
"</TH>");
                out.println("</TR>");
                
                // Now loop through the "rows of the result set
                while(results.next()){
                    // For each row, display the values for each column
                    out.print("<TR>");
                    for(int i = 0; i < numcols; i++)
                        out.print("<TH>" + results.getObject(i+1) +
"</TD>");
                    out.println("</TR>");
                }
                out.println("</TABLE>");  // end the table.
            
            }
            catch (SQLException e) {
                // If anything goes wrong (usually SQL error) display
the 
                // error to the user so they can correct it.
                out.println("SQL Error: " + e.getMessage());
            }
            finally { // Whatever happens, always close the Statement
object
                try { statement.close();}
                catch (Exception e) {}
             }
        }
    
        // Finally, end the HTML output
        out.println("</BODY>");
    }
}

*************************************************************************

When I load the servlet I get the following error:

Error: 500
Location: /myapp/query
Internal Servlet Error:

javax.servlet.ServletException: Query: can't initialize: null
        at Query.init(Query.java:31)
        at javax.servlet.GenericServlet.init(GenericServlet.java:258)
        at
org.apache.tomcat.core.ServletWrapper.doInit(ServletWrapper.java:317)
        at org.apache.tomcat.core.Handler.init(Handler.java:215)
        at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:296)
        at org.apache.tomcat.core.Handler.service(Handler.java:254)
        at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
        at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
        at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
        at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
        at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
        at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
        at java.lang.Thread.run(Thread.java:484)

Root cause: 
java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:120)
        at Query.init(Query.java:26)
        at javax.servlet.GenericServlet.init(GenericServlet.java:258)
        at
org.apache.tomcat.core.ServletWrapper.doInit(ServletWrapper.java:317)
        at org.apache.tomcat.core.Handler.init(Handler.java:215)
        at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:296)
        at org.apache.tomcat.core.Handler.service(Handler.java:254)
        at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
        at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
        at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
        at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
        at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
        at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
        at java.lang.Thread.run(Thread.java:484)

************************************************************************

I have put the location of my jdbc driver in my classpath before I
start up the tomcat server. I have also tried to put the zip file with
the drivers in myapps/web-inf/lib/ directory. It still does not seem to
be able to locate the jdbc driver. Following is my web.xml file :

************************************************************************
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";>

<web-app>

    <display-name>Hello, World Application</display-name>
    <description>
        This is a simple web application with a source code organization
        based on the recommendations of the Application Developer's Guide.
    </description>

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>Hello</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>MonkeyServlet</servlet-name>
        <servlet-class>Monkey</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MonkeyServlet</servlet-name>
        <url-pattern>/monkey</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ListManagerServlet</servlet-name>
        <servlet-class>ListManagerServlet</servlet-class>
            <init-param> 
                <param-name>addressfile</param-name> 
                <param-value>addressfile.txt</param-value> 
            </init-param> 
    </servlet>

    <servlet-mapping>
        <servlet-name>ListManagerServlet</servlet-name>
        <url-pattern>/list</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Query</servlet-name>
        <servlet-class>Query</servlet-class>
            <init-param> 
                <param-name>driverClassName</param-name> 
                <param-value>"com.sybase.jdbc.SybDriver"</param-value> 
                <param-name>url</param-name> 
                <param-value>"jdbc:sybase:Tds:localhost:2638"</param-value> 
                <param-name>username</param-name> 
                <param-value>"DBA"</param-value> 
                <param-name>password</param-name> 
                <param-value>"SQL"</param-value> 
            </init-param> 
    </servlet>

    <servlet-mapping>
        <servlet-name>Query</servlet-name>
        <url-pattern>/query</url-pattern>
    </servlet-mapping>

</web-app>
*************************************************************************

Any help on this would be greatly appreciated. 

Ajay



__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/

Reply via email to