RE: Problem connecting to mysql database with Tomcat and JNDI

2003-08-22 Thread Scott Stewart
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
titleUsing a DataSource/title
/head
body
h1Using 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 
  nameusername/name 
  valueusername/value 
/parameter 
parameter 
  namepassword/name 
  valuepassword/value 
/parameter 
parameter 
  nameurl/name 
  valuejdbc:mysql://localhost:3306/ADDRESS/value 
/parameter 
parameter 
  namedriverClassName/name 
  valuecom.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-namejdbc/address/res-ref-name 
  res-typejavax.sql.DataSource/res-type 
  res-authContainer/res-auth 
  /resource-ref 
/web-app 

Rob





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


RE: Problem connecting to mysql database with Tomcat and JNDI

2003-08-22 Thread Robert S. Jones
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
  nameusername/name
  valueusername/value
/parameter
parameter
  namepassword/name
  valuepassword/value
/parameter
parameter
  nameurl/name
  valuejdbc:mysql://localhost:3306/ADDRESS/value
/parameter
parameter
  namedriverClassName/name
  valuecom.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
 titleUsing a DataSource/title
 /head
 body
 h1Using 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 
   nameusername/name 
   valueusername/value 
 /parameter 
 parameter 
   namepassword/name 
   valuepassword/value 
 

RE: Problem connecting to mysql database with Tomcat and JNDI

2003-08-22 Thread Robert S. Jones
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
   nameusername/name
   valueusername/value
 /parameter
 parameter
   namepassword/name
   valuepassword/value
 /parameter
 parameter
   nameurl/name
   valuejdbc:mysql://localhost:3306/ADDRESS/value
 /parameter
 parameter
   namedriverClassName/name
   valuecom.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
  titleUsing a DataSource/title
  /head
  body
  h1Using 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 

Problem connecting to mysql database with Tomcat and JNDI

2003-08-21 Thread Robert S. Jones
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:320) 
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
titleUsing a DataSource/title
/head
body
h1Using 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 
  nameusername/name 
  valueusername/value 
/parameter 
parameter 
  namepassword/name 
  valuepassword/value 
/parameter 
parameter 
  nameurl/name 
  valuejdbc:mysql://localhost:3306/ADDRESS/value 
/parameter 
parameter 
  namedriverClassName/name 
  valuecom.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-namejdbc/address/res-ref-name 
  res-typejavax.sql.DataSource/res-type 
  res-authContainer/res-auth 
  /resource-ref 
/web-app 

Rob





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]