Problemas na configuração do MySQL no TomCat

5 respostas
luis.txt

Olá pessoal,

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.

java.lang.NullPointerException MySQLTestes.comando(MySQLTestes.java:39) LoginBanco.doPost(LoginBanco.java:55) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

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.

Agradeço quem puder me ajudar!

5 Respostas

furutani

Olá

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:

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLTestes{
	 public void comando(String str, PrintWriter pw) {
		   System.out.println("Testando acesso a banco de dado MySQL\n\n");
	       Connection conn = 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");  
	            Statement stm = conn.createStatement();  
	            ResultSet rs = stm.executeQuery("select * from usuarios where agencia = \"255-0\"");
	            while (rs.next()) {
	                
	                String agencia = rs.getString("agencia");
	                String conta = rs.getString("conta");
	                String nome = rs.getString("nome");
	                String saldo = 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(ClassNotFoundException e) {
	            System.out.println("excessão Classe não encontrada");
	            e.printStackTrace();
	        } catch(SQLException e) {
	            System.out.println("SQL Exception... Erro na consulta:");
	            e.printStackTrace();
	        } finally {
	            try {
	                conn.close();
	                System.out.println("\n\nFechamendo a conexão");
	            } catch(SQLException erro) {
	                System.out.println("Erro no fechamento");
	                erro.printStackTrace();
	            }
	        }	       	        
	   }	  
}

e este é o servlet que chama esta classe:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
	  
	public class LoginBanco extends HttpServlet {   
	private MySQLTestes mySQL = new MySQLTestes();
	  
	   protected void doGet(HttpServletRequest request, HttpServletResponse response)   
	         throws ServletException, IOException {   
	      writeHeader(response);   
	      writeForm(request, response);   
	      writeFooter(response);   
	   }   
	  
	   protected void doPost(HttpServletRequest request, HttpServletResponse response)   
	   throws ServletException, IOException {   
	     writeHeader(response);   
	     writeForm(request, response);   
	     PrintWriter pw = response.getWriter();   
	     pw.println("<BR>");   
	         
	     String conta = request.getParameter("CONTA");   
	     String agencia = request.getParameter("AGENCIA");  
	     String senha = request.getParameter("SENHA"); 
	            
	     pw.println("Saldo Total Disponível: "); 
	     mySQL.comando("SELECT * FROM usuarios WHERE agencia = \""+agencia+"\";",pw);
	     
	     writeFooter(response);   
	   }   
	      
	   private final void writeHeader(HttpServletResponse response) throws IOException {   
	      response.getWriter().println("<HTML><TITLE>::Login Banco da Praça::</TITLE><BODY>");   
	   }   
	   private final void writeFooter(HttpServletResponse response) throws IOException {   
	      response.getWriter().println("</BODY></HTML>");   
	   }   
	      
	   private final void writeForm(HttpServletRequest request, HttpServletResponse response)   
	   throws IOException {   
	      String agencia = request.getParameter("AGENCIA");   
	      String conta = request.getParameter("CONTA");   
	      String senha = request.getParameter("SENHA");      
	      PrintWriter pw = 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

obrigado pela ajuda!

Criado 11 de junho de 2008
Ultima resposta 12 de jun. de 2008
Respostas 5
Participantes 3