Estou começando a estudar servlets, MySQL e TomCat, utilizo o eclipse. Já li muitos dos tutoriais do guj, que me ajudaram muito. Mas estou com um problema:
Eu consigo colocar um servlet simples no ar, também consegui conversar com o MySQL através do java usando o jdbc. Mas na hora que eu utlizo as duas coisas (servlet e mySql no tomCat) colocando um servlet que faz conexão com o banco de dados, o programa dá exception: NullPointer.
entao eu acredito que falte alguma referência do mySQL no TomCat, visto que o MySql roda no eclipse e um servlet sem conexão à banco também eu consigo rodar no TomCat.
O que tem na linha 39 desse fonte MySQLTestes.java?
luis.txt
tem uma conexão com o mySQL…
eu já testei a conexão em uma aplicação java comum e funcionou… o problema é quando eu rodo pelo tomCat no browser. Dá esse erro. Parece que tipo o tomCat não reconhece o jar do conector…
não sei se ficou claro a minha explicação…
PBNETO
Verifique se você não está passando parâmetros nulos na classe “comando”…
Por exemplo, executando uma Query com sentença vazia…
furutani
luis.txt:
tem uma conexão com o mySQL…
eu já testei a conexão em uma aplicação java comum e funcionou… o problema é quando eu rodo pelo tomCat no browser. Dá esse erro. Parece que tipo o tomCat não reconhece o jar do conector…
não sei se ficou claro a minha explicação…
Acho que se você passar o código que obtem a conexão com o MySQL ficaria mais fácil te ajudar.
Só com esse NullpointerException não dá para concluir nada.
luis.txt
o código é esse:
importjava.io.PrintWriter;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassMySQLTestes{publicvoidcomando(Stringstr,PrintWriterpw){System.out.println("Testando acesso a banco de dado MySQL\n\n");Connectionconn=null;try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection("jdbc:mysql://localhost/banco_itau?user=root&password=4545");System.out.println("A conexão foi um sucesso\n");Statementstm=conn.createStatement();ResultSetrs=stm.executeQuery("select * from usuarios where agencia = \"255-0\"");while(rs.next()){Stringagencia=rs.getString("agencia");Stringconta=rs.getString("conta");Stringnome=rs.getString("nome");Stringsaldo=rs.getString("saldo");pw.println("Saldo: "+saldo);System.out.println("\nNome: "+nome+"\nAgência: "+agencia+" Conta: "+conta);System.out.println("\nSaldo: "+saldo);System.out.println("\n---------------------------------------");}System.out.println("\n\nConsulta realizada com sucesso!!!\n");}catch(ClassNotFoundExceptione){System.out.println("excessão Classe não encontrada");e.printStackTrace();}catch(SQLExceptione){System.out.println("SQL Exception... Erro na consulta:");e.printStackTrace();}finally{try{conn.close();System.out.println("\n\nFechamendo a conexão");}catch(SQLExceptionerro){System.out.println("Erro no fechamento");erro.printStackTrace();}}}}
e este é o servlet que chama esta classe:
importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassLoginBancoextendsHttpServlet{privateMySQLTestesmySQL=newMySQLTestes();protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{writeHeader(response);writeForm(request,response);writeFooter(response);}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{writeHeader(response);writeForm(request,response);PrintWriterpw=response.getWriter();pw.println("<BR>");Stringconta=request.getParameter("CONTA");Stringagencia=request.getParameter("AGENCIA");Stringsenha=request.getParameter("SENHA");pw.println("Saldo Total Disponível: ");mySQL.comando("SELECT * FROM usuarios WHERE agencia = \""+agencia+"\";",pw);writeFooter(response);}privatefinalvoidwriteHeader(HttpServletResponseresponse)throwsIOException{response.getWriter().println("<HTML><TITLE>::Login Banco da Praça::</TITLE><BODY>");}privatefinalvoidwriteFooter(HttpServletResponseresponse)throwsIOException{response.getWriter().println("</BODY></HTML>");}privatefinalvoidwriteForm(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{Stringagencia=request.getParameter("AGENCIA");Stringconta=request.getParameter("CONTA");Stringsenha=request.getParameter("SENHA");PrintWriterpw=response.getWriter();pw.println("Digite seus dados para entrar: <br><br>");pw.println("agência / conta / senha <br>");pw.println("<FORM ACTION=\"login\" METHOD=\"POST\">");pw.println("<INPUT TYPE=\"TEXT\" NAME=\"AGENCIA\" VALUE=\"\""+((agencia!=null)?agencia:"")+"\"/>");pw.println("<INPUT TYPE=\"TEXT\" NAME=\"CONTA\" VALUE=\"\""+((conta!=null)?conta:"")+"\"/>");pw.println("<INPUT TYPE=\"TEXT\" NAME=\"SENHA\" VALUE=\"\""+((senha!=null)?senha:"")+"\"/>");pw.println("<INPUT TYPE=\"SUBMIT\" VALUE=\"Entrar\"/>");pw.println("</FORM>");}}
o código está compilando sem problemas, a classe de conexão tambem funciona se rodo em uma aplicação comum, e o servlet também funciona se eu tiro a linha que chama a classe com mySQL