Acesso ao postgre com JSP via jdbc

9 respostas
W

Help,

Olha só meu problema:

Tenho um servidor linux com j2sdk1.4.2_04, tomcat 4131 e banco de dados postgre 745.

Bem, tenho que fazer uma aplicacao em JSP acessando um banco de dados no mesmo servidor.

Criei um banco de dados meuBanco, com User e Schema iguais a abc123.

Baixei o driver pg74.215.jdbc3.jar e apenas copiei na pasta “…/common/lib” abaixo do tomcat

Agora tento executar o codigo abaixo, que por sua vez nao funciona.

try
{
Class.forName(“org.postgresql.Driver”);
String url = “jdbc:postgresql://meuServer:5432/meuBanco”;
Properties props = new Properties();
props.setProperty(“user”,“abc123”);
props.setProperty(“password”,“abc123”);
Connection conn = DriverManager.getConnection(url, props);
}
catch (Exception e)
{
out.println("Erro
");
}

O que estou fazendo de errado?? O que esta faltando?? Pq minha conexao nao funciona??

Alguem ai pode me ajudar??

Grato

Wilcae

9 Respostas

L

Poste ai o erro que ta dando… assim fica mais facil ajudar :wink:

A sua base de dados aceita ligações tcp/ip??

aborges

Troque

catch (Exception e)
{
out.println("Erro
");
}

Por

catch (Exception e)
{
    e.printStackTrace();

}

Dessa forma, vc vera o erro q deu! Caso persista a duvida, envie esta mensagem de erro para q possamos avaliar ;)

Abracos

T

Será que o PostgreSQL está realmente atendendo na porta 5432?
Bom, acho que não é este erro que está dando para você…
Só para contar uma história.
Quando fui ajudar minha mulher a fazer uma aplicação usando Perl e PostgreSQL há alguns anos atrás a gente foi instalar isso num Linux em casa sob o VMware. Então já viu quanto a gente apanhou… uma coisa besta que tinha ocorrido é que por default o PostgreSQL não atende em nenhuma porta TCP, só via Unix Sockets e na máquina local ainda por cima. Tinha de fazer uma configuração no PostgreSQL para ele poder atender na porta TCP. Outra coisa besta é que nessa época não sabia que o Linux agora por default não instala o Telnet, só o ssh (a gente é do tempo do SCO Xenix, não tinha nada dessas coisas de segurança). Cadê o tal do Telnet? No fim das contas o negócio era logar direto no Linux em vez de acessar remotamente… Depois aprendi que tinha de usar o ssh (com o putty se fosse usar Windows), mas isso é outra história.

W

Entao,

Como sugerido, modifiquei meu catch da seguinte maneira:

catch (Exception e)

{

out.println(“Erro
”);

e.printStackTrace();

}

Acontece que a unica coisa que ele “printa” na tela eh a palavra erro.
:frowning:

Quanto a porta, creio que seja mesmo a 5432, porque estou usando o pgAdmin pra acessar o postgre e eh nessa porta que estou me conectando normalmente…

Eu acho que eh algum problema com o driver, talvez nao tenha configurado direito… nao sei

Obrigado

T

e.printStackTrace() joga a saída no log do servidor de aplicações, ou então em algum outro lugar misterioso. Para mostrar na própria tela
(estou supondo que você está usando um JSP), use e.printStackTrace (new PrintWriter (out)). Veja um exemplo:

<%@page import="java.io.*" %>
<html>
<head><title><%= new java.util.Date() %></title></head>
<body>
<%
try {
    throw new Exception("Exemplo de uso de PrintStackTrace");
} catch (Exception ex) {
    out.println("<pre>");    
    ex.printStackTrace (new PrintWriter (out));
    out.println("</pre>");    
}
%>
</body>
</html>
L

“wilcae”:

Acontece que a unica coisa que ele “printa” na tela eh a palavra erro.
:frowning:

Obrigado

O erro nao vai aparecer na tela… vc tem que ver o erro na consola do tomcat!

W

Acho que ja perceberam que eu estou mais perdido do que cachorro em dia de mudanca neh…

Agora ele tah mostrando o erro. Vao me xingar, mas tai o que esta aparecendo:


org.postgresql.util.PSQLException: A connection error has occurred: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host “127.0.0.1”, user “meuUser”, database “meuBanco” at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnectionV3(AbstractJdbc1Connection.java:337) at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJdbc1Connection.java:214) at org.postgresql.Driver.connect(Driver.java:139) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:140) at org.apache.jsp.conn_jsp._jspService(conn_jsp.java:69) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92) at javax.servlet.http.HttpServlet.service(HttpServlet.java:809) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187) 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) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534)


Se alguem souber como resolver isso

Grato novamente,

L

No servidor, edite o ficheiro pg_hba.conf e acrescente essa linha no final do ficheiro.

host       all         127.0.0.1     255.255.255.255    trust

Acho que isso deve resolver o problema!

M

Olá, tó precisando acessar um banco de dados em postgre via jsp ??

O que preciso fazer ??

Sou iniciante em java e em postgre, estou usando o eclipse 3.2 …

Obrigado

Criado 4 de novembro de 2004
Ultima resposta 19 de set. de 2006
Respostas 9
Participantes 5