Hello All,
I have 2 classes EstablishDBConnection.java which reads the database connection details from a txt file and then my servlet CustomQuery.java which used the other class to establish the connection and do its servlet stuff
But i the second (general) exception in doPost fires
Servlet code:
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.ServletResponse;
public class CustomQuery extends HttpServlet
{
Statement stmt;
ResultSet rs;
PrintWriter printer;
EstablishDBConnetion edbc;
public void init() throws ServletException
{
edbc = new EstablishDBConnetion();
edbc.establishConnection();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
printer = response.getWriter();
String title = "Result from custom query";
try
{
stmt = edbc.createStatementObj();
printer.println("<html><body><font color=black> test </font></body></html>");
stmt.createStatement();
rs = stmt.executeQuery("SELECT customerID" +
" FROM customer");
while (rs.next())
{
printer.println("<html> <head><title>" + title + "</title><br><br><table border=\"0\"> <tr><td>"
+ rs.getString(1));
}
}
catch (SQLException sqlx)
{
printer.println("SQL Exception");
sqlx.printStackTrace();
}
/*catch (Exception e)
{
printer.println("General Exception");
e.printStackTrace();
}*/
}
public void destroy()
{
try
{
rs.close();
stmt.close();
edbc.con.close();
}
catch (SQLException e)
{
printer.println("SQL Exception in destroy()");
e.printStackTrace();
}
catch (Exception e)
{
printer.println("Exception in destroy()");
e.printStackTrace();
}
}
}
establishConnection code
import java.io.*;
import java.sql.*;
import java.util.StringTokenizer;
class EstablishDBConnetion
{
Connection con;
public void establishConnection()
{
try
{
String dbDriver = "";
String dbUrl = "";
String dbName = "";
String dbUser = "";
String dbPassword = "";
String newLine = "";
BufferedReader fileRead = new BufferedReader(new FileReader("connection.txt"));
boolean readerStatus = fileRead.ready();
newLine = fileRead.readLine();
while (readerStatus)
{
StringTokenizer st = new StringTokenizer(newLine, ",");
while (st.hasMoreTokens())
{
dbDriver = st.nextToken();
dbUrl = st.nextToken();
dbName = st.nextToken();
dbUser = st.nextToken();
dbPassword = st.nextToken();
}
readerStatus = fileRead.ready();
}
Class.forName(dbDriver);
String url = dbUrl + dbName;
System.out.print(url);
con = DriverManager.getConnection(url, dbUser, dbPassword);
}
catch (SQLException sqlx)
{
sqlx.printStackTrace();
}
catch (IOException e)
{
System.out.println("IO exception in establishConnection()");
e.printStackTrace();
}
catch (Exception ex)
{
System.out.println("General exception in establishConnection()");
ex.printStackTrace();
}
}
public Statement createStatementObj() throws SQLException
{
Statement stmt = con.createStatement();
return (stmt);
}
public static void main(String[] args)
{
EstablishDBConnetion edbc = new EstablishDBConnetion();
edbc.establishConnection();
}
}
Output:
Output:
java.lang.NullPointerException
at EstablishDBConnetion.createStatementObj(EstablishDBConnetion.java:74)
at CustomQuery.doPost(CustomQuery.java:66)
at CustomQuery.doGet(CustomQuery.java:52)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:417)
at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:138)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2459)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:132)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:126)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)