Well Folks, the law of, "the longer a problem takes to resolve, the dumber the mistake" has held true once again. It turns out that I had my <Context> definition in the wrong place in the server.xml file. I'm aggravated, but glad to have the problem solved.
Thanks Scott for your suggestions. I should have posted the whole server.xml file. That probably would have made the problem obvious to folks more experienced than me. Rob On Fri, 2003-08-22 at 09:00, Robert S. Jones wrote: > Ok, I tried that. Same results. Here is my new <Context> definition. > > <Context path="/db-test" docBase="db-test" debug="0" reloadable="true"> > <Resource name="jdbc/address" auth="Container" > type="javax.sql.DataSource"/> > <ResourceParams name="jdbc/address"> > <parameter> > <name>username</name> > <value>username</value> > </parameter> > <parameter> > <name>password</name> > <value>password</value> > </parameter> > <parameter> > <name>url</name> > <value>jdbc:mysql://localhost:3306/ADDRESS</value> > </parameter> > <parameter> > <name>driverClassName</name> > <value>com.mysql.jdbc.Driver</value> > </parameter> > </ResourceParams> > </Context> > > Thanks, > Rob > > > On Fri, 2003-08-22 at 07:09, Scott Stewart wrote: > > Well, looking at your <Context> definition, I'm not seeing the following > > required element: > > > > <Resource name="jdbc/address" > > auth="Container" > > type="javax.sql.DataSource" /> > > > > Thanks, > > > > Scott Stewart > > [Manager, Software Development] > > [EMAIL PROTECTED] > > > > ClearSky Mobile Media, Inc. > > 56 E. Pine Street Suite 200 > > Orlando, FL 32801 > > USA > > > > > > > > > > > > -----Original Message----- > > From: Robert S. Jones [mailto:[EMAIL PROTECTED] > > Sent: Thursday, August 21, 2003 5:35 PM > > To: [EMAIL PROTECTED] > > Subject: Problem connecting to mysql database with Tomcat and JNDI > > > > > > Folks, > > > > I'm having trouble connecting to a mysql database through Tomcat. I'm > > using Tomcat 5.0.9a with mysql 4.0.14. I have the mysql 3.0.8 JDBC > > driver in ${TOMCAT_HOME}/common/lib. I'm running RedHat 8.0 with a > > stock kernel. > > > > I've been able to connect to the database without JNDI services. I > > believe I have the database user set up correctly. I have been all over > > the web trying to figure out what the problem is. It seems like > > everyone is having this problem, but no two solutions are the same. > > > > FWIW I've tried a lot of this on Tomcat 4 and have had the same results. > > > > I've traced the problem to the following code from the JSP file below: > > > > conn = ds.getConnection(); > > > > Any thoughts/ideas would be greatly appreciated. I'm at the end of my > > rope on this. > > > > Here is the error message I'm getting. > > > > java.lang.NullPointerException > > org.apache.jsp.usingDataSource_jsp._jspService(usingDataSource_jsp.java:74) > > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136) > > javax.servlet.http.HttpServlet.service(HttpServlet.java:856) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3 > > 20) > > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:293) > > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240) > > javax.servlet.http.HttpServlet.service(HttpServlet.java:856) > > > > Here is the JSP page I'm using: > > > > <[EMAIL PROTECTED] import="java.sql.*, javax.sql.*, javax.naming.*"%> > > <html> > > <head> > > <title>Using a DataSource</title> > > </head> > > <body> > > <h1>Using a DataSource</h1> > > <% > > DataSource ds = null; > > Connection conn = null; > > ResultSet result = null; > > Statement stmt = null; > > ResultSetMetaData rsmd = null; > > > > try { > > Context context = new InitialContext(); > > Context envCtx = (Context) context.lookup("java:comp/env"); > > ds = (DataSource)envCtx.lookup("jdbc/address"); > > if (ds != null) { > > conn = ds.getConnection(); > > stmt = conn.createStatement(); > > result = stmt.executeQuery("SELECT * FROM AddressList"); > > } > > } > > catch (SQLException e) { > > System.out.println("Error occurred " + e); > > } > > int columns = 0; > > try { > > rsmd = result.getMetaData(); // bad line > > columns = rsmd.getColumnCount(); > > } > > catch (SQLException e) { > > System.out.println("Error occurred " + e); > > } > > %> > > <table width="90%" border="1"> > > <tr> > > <% // write out the header cells containing the column labels > > try { > > for (int i = 1; i <= columns; i++) { > > out.write("<th>" + rsmd.getColumnLabel(i) + "</th>"); > > } > > %> > > </tr> > > <% // now write out one row for each entry in the database table > > while (result.next()) { > > out.write("<tr>"); > > for (int i = 1; i <= columns; i++) { > > out.write("<td>" + result.getString(i) + "</td>"); > > } > > out.write("</tr>"); > > } > > > > // close the connection, resultset, and the statement > > result.close(); > > stmt.close(); > > conn.close(); > > } // end of the try block > > catch (SQLException e) { > > System.out.println("Error " + e); > > } > > // ensure everything is closed > > finally { > > try { > > if (stmt != null) { > > stmt.close(); > > } > > } catch (SQLException e) {} > > try { > > if (conn != null) { > > conn.close(); > > } > > } catch (SQLException e ) {} > > } > > %> > > > > </table> > > </body> > > </html> > > > > > > Here are the changes I made to my server.xml file. Of course, I've > > changed the username/password entries here. > > > > <Context path="/db-test" docBase="db-test" debug="0" reloadable="true"> > > <ResourceParams name="jdbc/address"> > > <parameter> > > <name>username</name> > > <value>username</value> > > </parameter> > > <parameter> > > <name>password</name> > > <value>password</value> > > </parameter> > > <parameter> > > <name>url</name> > > <value>jdbc:mysql://localhost:3306/ADDRESS</value> > > </parameter> > > <parameter> > > <name>driverClassName</name> > > <value>com.mysql.jdbc.Driver</value> > > </parameter> > > </ResourceParams> > > </Context> > > > > Here is the web.xml file I am using in my WEB-INF directory. > > > > <?xml version="1.0" encoding="ISO-8859-1"?> > > <!DOCTYPE web-app PUBLIC > > "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > > "http://java.sun.com/dtd/web-app_2_3.dtd"> > > <web-app> > > <resource-ref> > > <res-ref-name>jdbc/address</res-ref-name> > > <res-type>javax.sql.DataSource</res-type> > > <res-auth>Container</res-auth> > > </resource-ref> > > </web-app> > > > > Rob > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
