Erro de conexão com MySql

Ola pessoal, sou novato em JSP e estou iniciando meu aprendizado e esta muito difícil para mim.

Estou tentando fazer uma conexão com o MySql e não consigo, esta aparecendo uma mensagem de erro “HTTp Status 500 -”
“description The server encountered an internal error () that prevented it from fulfilling this request.”

Não sei o que esta errado, já pesquisei a resposta nos tutoriais, não saio dai. Alguém tem uma luz?

Esse erro que vc falou não diz nada. Posta o código que vc tá usando e o stack trace do erro pra a gente dar uma ajuda.

[]'s

Rodrigo, este é o código.
Comprei o livro JavaServer Pages Guia do desenvolvedor e este é o primeiro exemplo de conexão com banco. Já o revisei e não consegui encontrar o erro.
Instalei o SQLyog e com ele consegui rodar o selec sem problemas.

<%@page import=“java.sql.*”%>
<html>
<head>
<title>Obtaining a Connection</title>
</head>

<h1>This Page Obtains a Connection to a Database</h1> <% Connection conn = null; ResultSet result = null; Statement stmt = null; ResultSetMetaData rsmd = null;
try {
  Class c = Class.forName("org.gjt.mm.mysql.Driver");
}
catch (Exception e) {
  System.out.println("ERRO ENCONTRADO " + e);
 }
 try {
     conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ADDRESS","luciano","luciano");
 }
 catch (SQLException e) {
    System.out.println("ERRO ENCONTRADO " + e);
 }
 try {
    stmt = conn.createStatement();
    result = stmt.executeQuery("SELECT * FROM AddressList");
    stmt.close();
    conn.close();
 }
 catch (SQLException e) {
     System.out.println("ERRO ENCONTRADO " + e);
  }
  finally {
    try {
      if (stmt != null)
        stmt.close();
    }  catch (SQLException e) {}
    try {
      if (conn != null)
        conn.close();
    } catch (SQLException e) {}
  }

%>

</html>

Obrigado pela ajuda.

Voce nao esta tratando as exceptions, entao vc nao tem como saber o que esta acontecendo :wink:

No caso, “nao tratar as exceptions” eh a parte onde vc faz

catch &#40;SQLException e&#41; &#123;&#125; 

ou seja, vc esta omitindo a mensagem de erro. O melhor seria algo como

catch &#40;SQLException e&#41; &#123;
    e.printStackTrace&#40;&#41;;
&#125; 

assim voce pode ver nos logs ou na tela o erro que ocorreu.

Rafael

Apliquei a alteração:

catch (SQLException e) {
e.printStackTrace();
}

por todo o código e não houve alteração na mensagem de erro.

Bom, deve ter aparecido uma mensagem de erro gigante, nao?!.. no meio dessa mensagem estao a razao do problema… se nao aparece nada ( soh esse erro 500 ), entao va no diretorio “logs” do tomcat e veja nos arquivos de logs a mensagem de erro ( stack trace ).

Em um desses lugares ela tem que estar.

Rafael

É esta a saida de erro.
Achei que tratavam-se apenas de referências.


org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)

root cause

java.lang.NullPointerException
at org.apache.jsp.jdbcConnection_jsp._jspService(jdbcConnection_jsp.java:73)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)


Olha logo abaixo de “root cause”… a exception foi

java.lang.NullPointerException

ou seja, voce tem algum objeto nao instanciado, e esta tendando fazer algo com ele. O problema eh que vc esta colocando varios try-catch, mas nao esta dando importancia para eles… por exemplo, voce tenta instanciar o driver do banco de dados… colocou dentro do try-catch e tudo mais, mas mesmo se der alguma exception, voce continua com o codigo logo abaixo, ao inves de parar por ai…

Entao pode ocorrer do JSP nao encontrar o driver do mysql, mas mesmo assim tentar abrir a conexao

Claro que isso foi soh um exemplo de situacao, eh mais provavel que o erro esteja em otro ponto, mas a ideia geral eh essa… Voce poderia colocar tudo dentro de um unico try-catch, ao inves de usar um para cada parte de codigo…

Rafael

Rafael, eu estou na tentativa e erro.
Esta assim no livro.
Eu estou com muita dificuldade e se o livro que estou pesquisando não me ajuda, o aprendizado vai pro vinagre.
Vc tem algum código de conexão com o MySql que eu possa utilizar para começar?

De qq forma obrigado.

Luciano

Tem um tutorial aqui no GUJ sobre o assunto… de uma olhada la… no mais, usando o “Pesquisar” aqui do forum, voce pode encontrar vaaarias mensagens relacionadas…

Rafael

Rafael, acredito que consegui encontrar o problema.
Alterei o código como segue e a conexão ocorreu com sucesso.
Ao meu ver o problema esta no driver de conexão com o MySql que não esta funcionando adequadamente.
Estou pesquisando a maneira correta de instalar o Connector/J e não encontrei um passo-a-passo e os artigos que estou lendo estão meio confusos. Alguém pode me ajudar?

try {

// Class c = Class.forName(“org.gjt.mm.mysql.Driver”);
Class c = Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch (Exception e) {
System.out.println(“ERRO ENCONTRADO " + e);
}
try {
// conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/ADDRESS”,“luciano”,“luciano”);
conn = DriverManager.getConnection(“jdbc:odbc:ADDRESS”, “”,”");
}

Obrigado

Luciano

Se não me falha a memória, você não tem que tratar os exceptions do mais complexo pro mais simples?

Então exception ele vai tudo parar no exception e nunca vai chegar a um SQLException?

estou certo?

Pessoal,
consegui realizar a conexão. Estava instalando a versão 3.1.0-alpha e os erros estão acima descritos, baixei a versão 3.0.10-stable e tudo esta rodando bem.

Obrigado pela atenção.

Luciano