Problemas em conectar ao MySql dentro do servlet usando bean

8 respostas
Z

Olá Pessoal,

Sou novo por aqui.
Estou há dias tentando me conectar a um banco de dados MySql, através de um javabean de conexão e não consigo.
Uso uma pág HTML p/ chamar um servlet e este servlet importa o pacote javabean para que eu possa instancia-lo e usar suas funções públicas.
Experimentei usar esse bean p/ abrir um banco de dados ACCESS através de ODBC e funcionou.
Outro detalhe interessante é q quando eu estabeleço a conexao diretamente no servlet, com todas as funções dentro do servlet, funciona. Mas através do bean nao vai de jeito nenhum.

Eu coloquei o arquivo “mysql-connector-java-3.1.12-bin.jar” dentro da pasta lib do WEB-INF da aplicação. Tinha lido q isso seria o suficiente.
Depois mudei p/ o common/lib, tb nao funcionou.
Como continuou com o problema adicionei a seguinte linha no classpath do autoexec.bat.
SET CLASSPATH=%CATALINA_HOME%\COMMON\LIB\mysql-connector-java-3.1.12-bin.jar;%CLASSPATH%
Tb não resolveu.

Abaixo aparece vai um trecho do erro q surge no navegador, a classe do servlet e do bean de conexão.

Se alguém puder me ajudar, agradeço desde já.

Abraços

Zovao

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 CadServletFileBeanConexArq.doPost(CadServletFileBeanConexArq.java:47)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)

A linha 47 é a q chama a função insertIntoDB do javabean.

========///////////////===============

// Este é o servlet CadServletFileBeanConexArq.java

import javax.servlet.<em>;

import javax.servlet.http.</em>;

import java.util.<em>;

import java.sql.</em>;

import conJdbc.*;
public class CadServletFileBeanConexArq extends HttpServlet {

public ConexPed connect = null;

private String driver = com.mysql.jdbc.Driver;

private String URL = jdbc:mysql://localhost:3306/cadastro”;
public void init( ServletConfig config )

throws ServletException

{

super.init( config );
try
  {
     connect = new ConexPed(driver, URL, "monty", "some_pass");
  } 
  catch ( Exception e )
  {
     e.printStackTrace();
     connect = null;
  }

}

public void doPost( HttpServletRequest req,

HttpServletResponse res )

throws ServletException

{

boolean success = true;

String email, nome, sobrenome, produto, valor;
email = req.getParameter( "Email" );
  nome = req.getParameter( "Nome" );
  sobrenome = req.getParameter( "Sobrenome" );
  produto = req.getParameter( "Produto" );
  valor = req.getParameter( "Valor" );

  res.setContentType( "text/html" );

  if ( email.length() > 0 && nome.length() > 0 && sobrenome.length() > 0 && valor.length() > 0 )
  {
    /* inserting data */
    success = connect.insertIntoDB(
       "'" + email + "','" + nome + "','" + sobrenome + "','" + produto + "'", Double.parseDouble(valor) );
  }

}

// fechando connection

public void destroy()

{

connect.fecharConexao();

}

}

=============///////////////============

Aqui está o contrutor do JavaBean.

package conJdbc;

import java.sql.*;

public class ConexPed

{

public Connection connection;

public Statement statement;
public ConexPed (String driver, String urlServidor, String user, String password)

throws SQLException

{

try

{

Class.forName(driver);

connection = DriverManager.getConnection(urlServidor,user,password);

}

catch (ClassNotFoundException ex)

{

System.out.println("Não foi possível encontrar a classe do Driver: " + driver);

}

catch (SQLException ex)

{

System.out.println(“Não foi possível conectar ao servidor”);

throw ex;

}
try

{

statement = connection.createStatement();

}

catch (SQLException ex)

{

System.out.println(“Não foi possível criar a statement”);

throw ex;

}

}

8 Respostas

M

Salve,

você deve instaciar a classe ConexPed antes de usá-la.

:okok:

Z

Desculpe a pergunta mas, quando eu escrevi

try

{

connect = new ConexPed(driver, URL, “monty”, “some_pass”);

}

não estou criando uma instancia do ConexPed?

Abraços.

M

Ah sim,

mas pode estar ocorrendo um erro aí, porque pelo que você passou este objeto ainda continua nulo.

:okok:

Z

Olá Marcos,

O q vc acha q pode estar errado, uma vez q eu consigo criar a instância quando eu passo as strings de driver e URL p/ abrir MS Access e tudo funciona?

P/ Access eu teria:

private String driver = “sun.jdbc.odbc.JdbcOdbcDriver”;
private String URL = “jdbc:odbc:Cadastro”;

try
  {
     connect = new ConexPed(driver, URL, "root", "");
  }

Experimentei criar um teste com main e ele conseguiu inserir dados no mysql através deste mesmo javabean.

Abraços.

M

Então eu sugiro que você faça um debug desta classe para identificar onde está setando este objeto para nulo.

:okok:

Z

Olá Marcos,

Coloquei uma série de System.out.println.
Indica q nao consegue instanciar “new ConexPed”, e entra no respectivo catch.
As mensagens do javabean nao aparecem no console.
Vc conhece outro jeito de depurar?

Abraços.

M

Opa,

Cara, então está rolando uma SQLException aí, e você tem que pegar ela para saber o que está acontecendo, aí dependendo resolva o problema.

:okok:

Z

Valeu Marcos,

Vou dar uma pensada neste feriadão e fazer mais testes na terça.
Volto a escrever pra te dizer os resultados.

Obrigadão

Zovao.

Criado 25 de abril de 2006
Ultima resposta 28 de abr. de 2006
Respostas 8
Participantes 2