Conexão (postgre) retornando "null"

Bom dia pessoal, estou com o seguinte problema: estou desenvolvendo um sistema web (jsp), e quando tento cadastrar alguém está retornando null (quando testo depurando e parando ele aqui User user = new User(); ).
Eu dividi os pacotes usuario e bd. Segue os códigos:

Cadastro (jsp)

<%@page import="pac_user.User"%>
<%@page import="java.sql.Connection"%>
<%@page import="pac_bd.Bd"%>
<%@page import="pac_sistema.Security"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <%
            String name= request.getParameter("name");
            String lastname= request.getParameter("lastname");
            String email = request.getParameter("email");
            String login = request.getParameter("login");
            String passw= request.getParameter("passw");
            String passw2 = request.getParameter("passw2");
            if (("".equalsIgnoreCase(name))||("".equalsIgnoreCase(lastname))||("".equalsIgnoreCase(email)) 
                    ||("".equalsIgnoreCase(login))|| ("".equalsIgnoreCase(passw))
                    ||("".equalsIgnoreCase(passw2))){
                response.sendRedirect("Cadastrando.jsp");
            } else if (passw.equals(passw2)) {
                Security criptografar = new Security();
                String newPassw = criptografar.criptografia(passw);

                Bd conn = new Bd();
                Connection con = conn.abrir();

                User user = new User();
                user.insert(user, con);

                response.sendRedirect("Confirmando_Cadastro.jsp");
                conn.fechar();
            } else {
                out.println("Houve algum erro!<br/>Tente novamente.");

            }
        %>
    </body>
</html>

Classe do Banco de dados(do pacote bd):

import java.sql.Connection;
import java.sql.DriverManager;

public class Bd {

    private Connection con;

    public Connection getConexao() {
        return con;
    }

    public Connection abrir() {
        String bd = "jdbc:postgresql://localhost:5432/postgres";
        try {
            Class.forName("org.postgresql.Driver");
            con = DriverManager.getConnection(bd, "postgres", "");
        } catch (SQLException s) {
            System.out.println("Erro SQL: " + s.toString() + " "
                    + s.getErrorCode() + " " + s.getSQLState());
        } catch (Exception e) {
            System.out.println("Erro: " + e.toString()
                    + e.getMessage());
        }
        return con;
    }

    public void fechar() throws SQLException {
        con.close();

    }
}

Classe do usuario do pacote user)

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author Gabi
 */
public class User {
    private int id;
    private String name;
    private String lastname;
    private String email;
    private String login;
    private String passw;
    
    public int getId(){
        return id;
    }
    public String getName() {
    	    return name;
    }
    public void setName(String name) {
        this.name= name;
    }
    
    public String getLastname(){
        return lastname;
    }
    public void setLastname(String lastname){
        this.lastname= lastname;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassw() {
        return passw;
    }
    public void setPassw(String passw) {
        this.passw= passw;
    }
    
       public void inserir (User user,Connection con){
        try {              
            Statement conf = con.createStatement();
            StringBuffer bd = new StringBuffer("INSERT INTO user (name, lastname, email, login, passw)"
                    + "VALUES('" + user.name + "', '" + user.lastname+ "', '" + user.email + "', '" 
                    + user.login + "', '" + user.passw+ "');");
            conf.execute(bd.toString());
            con.close();
            conf.close();
        } catch (SQLException ex) {
            System.out.println("ERROR!\n\nErro ao cadastrar dados!" + ex);
        }
    }
}

erro do glassfish:

Listening for transport dt_socket at address: 9009
11/10/2011 08:41:25 com.sun.enterprise.glassfish.bootstrap.ASMain main
INFO: Launching GlassFish on Felix platform
Welcome to Felix

INFO: Perform lazy SSL initialization for the listener ‘http-listener-2’
INFO: Starting Grizzly Framework 1.9.18-o - Tue Oct 11 08:41:39 BRT 2011
INFO: Starting Grizzly Framework 1.9.18-o - Tue Oct 11 08:41:39 BRT 2011
INFO: Grizzly Framework 1.9.18-o started in: 417ms listening on port 8181
INFO: Grizzly Framework 1.9.18-o started in: 343ms listening on port 3700
INFO: Grizzly Framework 1.9.18-o started in: 448ms listening on port 8080
INFO: Grizzly Framework 1.9.18-o started in: 386ms listening on port 4848
INFO: Grizzly Framework 1.9.18-o started in: 311ms listening on port 7676
INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
INFO: SEC1002: Security Manager is OFF.
INFO: Security startup service called
INFO: SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
INFO: Realm admin-realm of classtype com.sun.enterprise.security.auth.realm.file.FileRealm successfully created.
INFO: Realm file of classtype com.sun.enterprise.security.auth.realm.file.FileRealm successfully created.
INFO: Realm certificate of classtype com.sun.enterprise.security.auth.realm.certificate.CertificateRealm successfully created.
INFO: Security service(s) started successfully…
INFO: Created HTTP listener http-listener-1 on port 8080
INFO: Created HTTP listener http-listener-2 on port 8181
INFO: Created HTTP listener admin-listener on port 4848
INFO: Created virtual server server
INFO: Created virtual server __asadmin
INFO: Virtual server server loaded system default web module
INFO: Loading application MoneyWeb at /MoneyWeb
INFO: Loading MoneyWeb Application done is 6197 ms
INFO: GlassFish Server Open Source Edition 3.0.1 (22) startup time : Felix(12870ms) startup services(8288ms) total(21158ms)
INFO: Binding RMI port to *:8686
INFO: Hibernate Validator bean-validator-3.0-JBoss-4.0.2
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
INFO: JMXStartupService: Started JMXConnector, JMXService URL = service:jmx:rmi://Gabi-PC:8686/jndi/rmi://Gabi-PC:8686/jmxrmi
INFO: Created HTTP listener http-listener-1 on port 8080
INFO: Grizzly Framework 1.9.18-o started in: 18ms listening on port 8080
INFO: Perform lazy SSL initialization for the listener ‘http-listener-2’
INFO: Created HTTP listener http-listener-2 on port 8181
INFO: Grizzly Framework 1.9.18-o started in: 8ms listening on port 8181
INFO: [Thread[GlassFish Kernel Main Thread,5,main]] started
INFO: {felix.fileinstall.poll (ms) = 5000, felix.fileinstall.dir = C:\Users\Gabi\GlassFish_Server\glassfish\modules\autostart, felix.fileinstall.debug = 1, felix.fileinstall.bundles.new.start = true, felix.fileinstall.tmpdir = C:\Users\Gabi\AppData\Local\Temp\fileinstall–660025937005803222, felix.fileinstall.filter = null}
INFO: {felix.fileinstall.poll (ms) = 5000, felix.fileinstall.dir = C:\Users\Gabi\GlassFish_Server\glassfish\domains\domain1\autodeploy\bundles, felix.fileinstall.debug = 1, felix.fileinstall.bundles.new.start = true, felix.fileinstall.tmpdir = C:\Users\Gabi\AppData\Local\Temp\fileinstall-514853174486832906, felix.fileinstall.filter = null}
INFO: Started bundle: file:/C:/Users/Gabi/GlassFish_Server/glassfish/modules/autostart/org.apache.felix.scr.jar
INFO: Updating configuration from org.apache.felix.fileinstall-autodeploy-bundles.cfg
INFO: Installed C:\Users\Gabi\GlassFish_Server\glassfish\modules\autostart\org.apache.felix.fileinstall-autodeploy-bundles.cfg
INFO: {felix.fileinstall.poll (ms) = 5000, felix.fileinstall.dir = C:\Users\Gabi\GlassFish_Server\glassfish\domains\domain1\autodeploy\bundles, felix.fileinstall.debug = 1, felix.fileinstall.bundles.new.start = true, felix.fileinstall.tmpdir = C:\Users\Gabi\AppData\Local\Temp\fileinstall–3527518020024565788, felix.fileinstall.filter = null}
INFO: Loading application MoneyWeb at /MoneyWeb
INFO: MoneyWeb was successfully deployed in 790 milliseconds.
Listening for transport dt_socket at address: 9009
INFO: Loading application MoneyWeb at /MoneyWeb
INFO: MoneyWeb was successfully deployed in 843 milliseconds.
Listening for transport dt_socket at address: 9009
INFO: Erro: java.lang.ClassNotFoundException: org.postgresql.Driverorg.postgresql.Driver
AVISO: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at pac_user.Usero.inserir(User.java:89)

at org.apache.jsp.Validar_005fCadastro_jsp._jspService(Validar_005fCadastro_jsp.java from :82)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:406)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:483)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:373)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:662)

INFO: Loading application MoneyWeb at /MoneyWeb
INFO: MoneyWeb was successfully deployed in 484 milliseconds.
INFO: Erro: java.lang.ClassNotFoundException: org.postgresql.Driverorg.postgresql.Driver

Oi !

Bom dia !

Está certo mesmo sua senha de acesso do usuário postgres vir em branco ?!

con = DriverManager.getConnection(bd, "postgres", "");

Dá uma verificada nisso e se for necessário, ajudaremos em mais alguma coisa.

Saúde e paz à todos !

Anderson Ramos

Bom está certo, eu não coloquei senha nele…

Opa blz,

Pelo mensagem de erro, o problema está occorendo na linha 89 da sua classe User.java, não sei, o que tem nessa linha, mas talvez o problema não seja na conexão com seu banco, pode ser algum objeto que vc não instanciou, ou alguma conversão com valor null.

Bom mas para ter certeza se é a conexão ou não, dentro do método de conexão coloca um JOptionPane.showMessageDialog(), mostrando o status da sua conexão.

depois das linhas

Class.forName("org.postgresql.Driver"); con = DriverManager.getConnection(bd, "postgres", "");

coloca:

JOptionPane.showMessagemDialog(null, "Estado da conexão: "+con==null);

Se der False é pq sua conexão está ok, e o problema é outra coisa.

na linha 89

Statement conf = con.createStatement();

Gabi só uma coisa você está fechando a connexão duas vezes no metodo inserir do usuario

            conf.execute(bd.toString());  
            con.close();  
            conf.close();  

e no jsp

            response.sendRedirect("Confirmando_Cadastro.jsp");  
            conn.fechar();  

e se estiver utilizando uma versão do java posterior a 5 pode tirar o Class.forName()

try {  
            Class.forName("org.postgresql.Driver");  
            con = DriverManager.getConnection(bd, "postgres", "");  
        }

A conexao continua indo “null”
quando eu “depuro”

e não apareceu nenhuma mensagem com o JOptionPane.showMessageDialog(…

Já apaguei uma das “fechadas”

eu olhei novamente o log e encontrei o erro class not found


INFO: Erro: java.lang.ClassNotFoundException: org.postgresql.Driverorg.postgresql.Driver
AVISO: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at pac_user.Usero.inserir(User.java:89)

dá uma olhada se o driver do postgres está corretamente mapeado no classPath vê se ele está

se estiver utilizando o eclipse é só seguir a seguencia

project - properties - java build path

e na aba libraries ir expandindo os itens já existentes e verificar se consta ou não o driver do postgres, caso não clique em add jars e adicione.

agora notei mais uma coisa presta atenção nessa linha

INFO: Erro: java.lang.ClassNotFoundException: org.postgresql.Driverorg.postgresql.Driver  

ele tah procurando a classe org.postgresql.Driverorg.postgresql.Driver
tenta tirar o Class.forName e vê se dá certo

Eu já tirei, continua chamando a conexao como null

e eu to usando o netbeans 7.0.1

ele tambem ta dando erra na linha 81 do validarcadastro.jsp.java

mais não tem nada nessa linha, antes aparece isso

User user = new User();
user.inserir(user, con);

mais nada na linha 81

Bom mas e o driver do postgres você já adiciono ao classpath?!

faz muito tempo que não trabalho com o netbeans mas as libries ficam listadas na biblioteca, veja se está lá caso não dá um clique com o botão direito, e adicionar jar e procura o local onde está o driver e adiciona.

Vc consegue acessar o banco fora do java, usando alguma ferramente de administração de BD?

Pq é estranho criar um banco sem senha, alguns BD nem permite isso, nunca trabalhei com postgree, então não sei dizer se isso é permitido com ele, mas faz o teste tenta se conectar com o banco fora do java.

Gabi dei uma olhada de como fazer no netbeans, não sei se está correto mas vamos lá…

verifica na pasta bibliotecas se nela consta o drive do postgres, vai expandindo todos os itens que tiver lá e vê se algum é ele, caso não clica com o botão direito em bibliotecas e em adicionar jar e adiciona o .jar do driver do postgres

dá uma olhada nesse post

Lendo um pouco sobre em um site que encontrei, diz que para se conectar com o postgree sem senha é necessário fazer alterações nos arquivos de configuração do postgree, no site fala como fazer essa alteração no ubuntu e tb PhpPgAdmin, possivelvente esse é o problema que esta acontecendo com vc.

Recomendo que vc crie um usuario e senha para vc acessar o banco e não usar esse padrão.

Link do site que consultei: http://blogetilico.wordpress.com/2007/01/26/login-sem-senha-no-postgresql/

Poxa gente, testei todas as dicas que me deram e ainda ta chamando null…
Tava sem o postgre… jar
acrescentei, desativei o firewall, coloquei senha no bd.

O pior é que quando minhas classes estavam errada, tava funcionando, agora que estão no padrao (pacote letra minuscula, em vez de classe cadastro classe User…) ele parou de cadastrar.

Estava olhando/testando e vi que quando chamo user.inserir (name,lastname …)

ele está passando os valores como null também.

Queria saber se alguém sabe porque, ou se imaginam (já que postei os cod aqui).

.

Gabi, faz um pacote com nome repositório e dentro dele cria uma classe com o nome UserDAO e dentro dela é que você coloca o método inserir. Eu sei porque todos os seus parâmetros estão dando como null agora que você falou ficou tudo claro.


public void inserir (User user,Connection con){  
        try {                
            Statement conf = con.createStatement();  
            //aqui em vez de acessar diretamente os tributos do user você deveria utilizar os métodos de acesso get
            //tipo user.getNome, por isto está dando errado.
            StringBuffer bd = new StringBuffer("INSERT INTO user (name, lastname, email, login, passw)"  
                    + "VALUES('" + user.name + "', '" + user.lastname+ "', '" + user.email + "', '"   
                    + user.login + "', '" + user.passw+ "');");  
            conf.execute(bd.toString());  
            con.close();  
            conf.close();  
        } catch (SQLException ex) {  
            System.out.println("ERROR!\n\nErro ao cadastrar dados!" + ex);  
        }  
    }  

Bom esse é um dos erros pelo qual está dando o null point, outra coisa esse seu código que foi criada em um jsp deveria estar em um servlet, você está utilizando somente código java quando na verdade arquivos jsp são para trabalhar com html, tagblits e scriptles.

seria legal se você arrumasse um tempinho pra ler a apostila fj21 da caelum eu já a li e aprendi muito recomendo totalmente.

faz ai as alterações e passa o feedback.