Discussion:
Tomcat MySQL JSPs and JavaBeans
(too old to reply)
Jon Dellaria
2003-09-13 03:50:20 UTC
Permalink
I have been working with JSP's and MySql using Tomcat. Until now it
has been working fine. I think I am having a problem with defining my
JDBC resource within Tomcat. I am pretty sure that my code is correct
(but I am not certain), and the problem is with defining the resource
in Tomcat. The error I am getting is:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented
it from fulfilling this request.

exception

java.lang.NullPointerException
at jspbook.ch5.Main.authenticate(Main.java:126)
at jspbook.ch5.Main.doPost(Main.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
....

Here is my Main.java:

package jspbook.ch5;

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

import jspbook.ch5.CustomerBean;

public class Main extends HttpServlet {

// Connection dbCon;
DataSource ds;
HttpSession session;

/* Initialize servlet. Use JNDI to look up a DataSource */
public void init() {

try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/QuotingDB");
// dbCon = ds.getConnection();
System.out.println("executed lookup for jdbc. JON");
}
catch (javax.naming.NamingException e) {
System.out.println("A problem occurred while retrieving a
DataSource object");
System.out.println(e.toString());
}

}

public void doPost (HttpServletRequest _req, HttpServletResponse
_res)
throws ServletException, IOException {

/* Refresh session attributes */
session = _req.getSession();
session.removeAttribute("loginError");
session.removeAttribute("submitError");

String action = _req.getParameter("action");

/* Authenticate user if request comes from login page */
if (action.equals("login")) {
String uid = _req.getParameter("UID");
String pwd = _req.getParameter("PWD");
if (authenticate(uid, pwd)) {
session.setAttribute("validUser", "y");
session.setAttribute("loginError", "n");
session.setAttribute("uid", uid);
gotoPage("/WEB-INF/jsp/ch5/census.jsp", _req, _res);
}
/* If the user login fails, then return them to the login page
to retry */
else {
loginError(_req, _res);
}
}

/* Record the survey data if the request comes from the survey
form */
else if (action.equals("submit")) {
/* Make sure the user has logged in before recording the data */
String validUser = (String) session.getAttribute("validUser");
if (validUser.equals("y")) {
if (recordSurvey(_req)) {
/* Reset validUser flag and forward to ThankYou page */
session.removeAttribute("validUser");
gotoPage("/WEB-INF/jsp/ch5/thankyou.jsp", _req, _res);
}
else {
session.setAttribute("submitError", "y");
gotoPage("/ch5/login.jsp", _req, _res);
}
}
/* If the user did not login, then send them to the login page
*/
else {
loginError(_req, _res);
}
}

}

/* Send request to a different page */
private void gotoPage(String _page, HttpServletRequest _req,
HttpServletResponse _res)
throws IOException, ServletException {

RequestDispatcher dispatcher = _req.getRequestDispatcher(_page);
if (dispatcher != null)
dispatcher.forward(_req, _res);

}

/* Set error attributes in session and return to Login page */
private void loginError(HttpServletRequest _req, HttpServletResponse
_res)
throws IOException, ServletException {

session.setAttribute("validUser", "n");
session.setAttribute("loginError", "y");
gotoPage("/ch5/login.jsp", _req, _res);

}

/* Check if the user is valid */
private boolean authenticate(String _uid, String _pwd) {

Connection dbCon = null;
ResultSet rs = null;
try {
System.out.println("try");
dbCon = ds.getConnection();
System.out.println("dbCon = ds.getConnection()");
Statement s = dbCon.createStatement();
System.out.println("Statement s = dbCon.createStatement()");
rs = s.executeQuery("select * from user where id = '"
+ _uid + "' and pwd = '" + _pwd + "'");
System.out.println("rs = s.executeQuery");
return (rs.next());
}
catch (java.sql.SQLException e) {
System.out.println("A problem occurred while accessing the
database.");
System.out.println(e.toString());
}
finally {
try {
dbCon.close();
}
catch (SQLException e) {
System.out.println("A problem occurred while closing the
database.");
System.out.println(e.toString());
}
}

return false;

}

/* Using the CustomerBean, record the data */
public boolean recordSurvey(HttpServletRequest _req) {

Connection dbCon = null;
try {
dbCon = ds.getConnection();
CustomerBean cBean = new CustomerBean();
cBean.populateFromParms(_req);
return cBean.submit(dbCon);
}
catch (java.sql.SQLException e) {
System.out.println("A problem occurred while accessing the
database.");
System.out.println(e.toString());
}
finally {
try {
dbCon.close();
}
catch (SQLException e) {
System.out.println("A problem occurred while closing the
database.");
System.out.println(e.toString());
}
}

return false;
}

public void destroy() {}

}


--------

Here is my web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!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>
<servlet>
<servlet-name>
Main
</servlet-name>
<servlet-class>
jspbook.ch5.Main
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
Main
</servlet-name>
<url-pattern>
/ch5/Main
</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/simple</taglib-uri>
<taglib-location>/WEB-INF/tlds/simple.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tableUtils</taglib-uri>
<taglib-location>/WEB-INF/tlds/utils.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/groceries</taglib-uri>
<taglib-location>/WEB-INF/tlds/groceries.tld</taglib-location>
</taglib>
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/QuotingDB
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
SERVLET
</res-auth>
</resource-ref>
</web-app>

------------

Any help or direction will be greatly appreciated.


Regards,

Jon Dellaria
Jon Dellaria
2003-09-15 21:49:35 UTC
Permalink
I have been using MySql as the database using JSP's and Applets but
recently I have wanted to start using the database connection pooling

mechanism built into TomCat. I think I am having a problem with
defining my JDBC resource within Tomcat. I am pretty sure that my code
is

correct (but I am not certain), and the problem is with defining the
resource in Tomcat. Has anyone done this before? Any advice would be
helpful.

The error in the TomCat Window is:

java.sql.SQLException: Cannot create JDBC driver of class
'org.gjt.mm.mysql.Driver' for connect URL 'null'

The error I am getting in the web browser is:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented
it from fulfilling this request.

exception

java.lang.NullPointerException
at jspbook.ch5.Main.authenticate(Main.java:126)
at jspbook.ch5.Main.doPost(Main.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
....
jauki
2003-09-18 08:35:16 UTC
Permalink
I've read the same book "JSP practique examples" and i have the same
problem in some machines but in other it function well.

Curiously I have running all aplicaion in a server and all is OK, I
connect it from other machine and depending the user that i connect to
it, funtions or no.


--
Posted via http://dbforums.com
r***@virtuosonetsoft.com
2016-10-10 11:57:50 UTC
Permalink
Post by Jon Dellaria
I have been working with JSP's and MySql using Tomcat. Until now it
has been working fine. I think I am having a problem with defining my
JDBC resource within Tomcat. I am pretty sure that my code is correct
(but I am not certain), and the problem is with defining the resource
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented
it from fulfilling this request.
exception
java.lang.NullPointerException
at jspbook.ch5.Main.authenticate(Main.java:126)
at jspbook.ch5.Main.doPost(Main.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
....
package jspbook.ch5;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import jspbook.ch5.CustomerBean;
public class Main extends HttpServlet {
// Connection dbCon;
DataSource ds;
HttpSession session;
/* Initialize servlet. Use JNDI to look up a DataSource */
public void init() {
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/QuotingDB");
// dbCon = ds.getConnection();
System.out.println("executed lookup for jdbc. JON");
}
catch (javax.naming.NamingException e) {
System.out.println("A problem occurred while retrieving a
DataSource object");
System.out.println(e.toString());
}
}
public void doPost (HttpServletRequest _req, HttpServletResponse
_res)
throws ServletException, IOException {
/* Refresh session attributes */
session = _req.getSession();
session.removeAttribute("loginError");
session.removeAttribute("submitError");
String action = _req.getParameter("action");
/* Authenticate user if request comes from login page */
if (action.equals("login")) {
String uid = _req.getParameter("UID");
String pwd = _req.getParameter("PWD");
if (authenticate(uid, pwd)) {
session.setAttribute("validUser", "y");
session.setAttribute("loginError", "n");
session.setAttribute("uid", uid);
gotoPage("/WEB-INF/jsp/ch5/census.jsp", _req, _res);
}
/* If the user login fails, then return them to the login page
to retry */
else {
loginError(_req, _res);
}
}
/* Record the survey data if the request comes from the survey
form */
else if (action.equals("submit")) {
/* Make sure the user has logged in before recording the data */
String validUser = (String) session.getAttribute("validUser");
if (validUser.equals("y")) {
if (recordSurvey(_req)) {
/* Reset validUser flag and forward to ThankYou page */
session.removeAttribute("validUser");
gotoPage("/WEB-INF/jsp/ch5/thankyou.jsp", _req, _res);
}
else {
session.setAttribute("submitError", "y");
gotoPage("/ch5/login.jsp", _req, _res);
}
}
/* If the user did not login, then send them to the login page
*/
else {
loginError(_req, _res);
}
}
}
/* Send request to a different page */
private void gotoPage(String _page, HttpServletRequest _req,
HttpServletResponse _res)
throws IOException, ServletException {
RequestDispatcher dispatcher = _req.getRequestDispatcher(_page);
if (dispatcher != null)
dispatcher.forward(_req, _res);
}
/* Set error attributes in session and return to Login page */
private void loginError(HttpServletRequest _req, HttpServletResponse
_res)
throws IOException, ServletException {
session.setAttribute("validUser", "n");
session.setAttribute("loginError", "y");
gotoPage("/ch5/login.jsp", _req, _res);
}
/* Check if the user is valid */
private boolean authenticate(String _uid, String _pwd) {
Connection dbCon = null;
ResultSet rs = null;
try {
System.out.println("try");
dbCon = ds.getConnection();
System.out.println("dbCon = ds.getConnection()");
Statement s = dbCon.createStatement();
System.out.println("Statement s = dbCon.createStatement()");
rs = s.executeQuery("select * from user where id = '"
+ _uid + "' and pwd = '" + _pwd + "'");
System.out.println("rs = s.executeQuery");
return (rs.next());
}
catch (java.sql.SQLException e) {
System.out.println("A problem occurred while accessing the
database.");
System.out.println(e.toString());
}
finally {
try {
dbCon.close();
}
catch (SQLException e) {
System.out.println("A problem occurred while closing the
database.");
System.out.println(e.toString());
}
}
return false;
}
/* Using the CustomerBean, record the data */
public boolean recordSurvey(HttpServletRequest _req) {
Connection dbCon = null;
try {
dbCon = ds.getConnection();
CustomerBean cBean = new CustomerBean();
cBean.populateFromParms(_req);
return cBean.submit(dbCon);
}
catch (java.sql.SQLException e) {
System.out.println("A problem occurred while accessing the
database.");
System.out.println(e.toString());
}
finally {
try {
dbCon.close();
}
catch (SQLException e) {
System.out.println("A problem occurred while closing the
database.");
System.out.println(e.toString());
}
}
return false;
}
public void destroy() {}
}
--------
Here is my web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>
<servlet>
<servlet-name>
Main
</servlet-name>
<servlet-class>
jspbook.ch5.Main
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
Main
</servlet-name>
<url-pattern>
/ch5/Main
</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/simple</taglib-uri>
<taglib-location>/WEB-INF/tlds/simple.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tableUtils</taglib-uri>
<taglib-location>/WEB-INF/tlds/utils.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/groceries</taglib-uri>
<taglib-location>/WEB-INF/tlds/groceries.tld</taglib-location>
</taglib>
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/QuotingDB
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
SERVLET
</res-auth>
</resource-ref>
</web-app>
------------
Any help or direction will be greatly appreciated.
Regards,
Jon Dellaria
Continue reading on narkive:
Loading...