Java.lang.NullPointerException[Resolvido]

Pessoal, sei que é um erro de objeto que esta como NULL, porem não estou conseguindo visualizar o erro de jeito nenhum. As informações chegam até Servlet tranquilo, em vez de usar o servlet eu fiz uma classe com o main() e fiz a mesma estrutura do mesmo e inseri no banco. Mas quando eu utilizo do;

Browser > Servlet > acontece o seguinte exception:

java.lang.NullPointerException
	br.com.teste.dao.PaisDAO.inserir(PaisDAO.java:22)
	br.com.teste.servlet.PaisServlet.service(PaisServlet.java:34)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

Alguem poderia ajudar?

Grato,

Segue as classes e no final o Stack.
Bean:

package br.com.teste.bean;



public class Pais {

	private Long id; 
	private int codigo; 
	private String descricao;


	/**
	 * Construtor da classe <code>Pais</code> responsavel por receber os parametros
	 * para configuracao das variaveis da classe.
	 * 
	 * @param id
	 * @param codigo
	 * @param descricao
	 */
	
	public Pais() {
		

	}

	/**
	 * Metodo responsavel por armazenar informacao do ID registrado
	 * no banco de dados da classe <code>Pais</code>.
	 * 
	 * @param id
	 */
	public void setId(Long id) {
		this.id = id;
	}
	
	/**
	 * Metodo responsavel por retornar o ID registrado no banco de dados da classe <code>Pais</code>.
	 * 
	 * @return id
	 */
	public Long getId() {
		return id;
	}
	
	/**
	 * Metodo responsavel por armazenar informacao do codigo do <code>Pais</code>
	 * Este codigo e unico.
	 * @param codigo
	 */
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	
	/**
	 * Metodo responsavel por retornar o codigo do <code>Pais</code>
	 * Este codigo e unico.
	 * @return codigo
	 * 
	 */
	public int getCodigo() {
		
		return codigo;
	}
	
	/**
	 * Metodo responsavel por armazenar informacao da descricao do <code>Pais</code>
	 * @param descricao
	 */
	public void setDescricao(String descricao) {
		
		this.descricao = descricao;
	}
	
	/**
	 * Metodo responsavel por retornar a descricao do <code>Pais</code>
	 * @return descricao
	 */
	public String getDescricao() {
		
		return descricao;
	}
}

Conecta:

package br.com.teste.factory;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class Conecta {
	
	private String url;
	private String banco;
	private String usuario;
	private String senha;

	Connection con = null;
	
	/**
	 * Metodo responsavel por retornar a conexao do banco de dados.
	 * 
	 * @return con
	 */
	public Connection getConexao() {
		
		try {
			

			con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/dbteste","postgres","123456");

		} catch (SQLException e) {
			System.out.println("Banco não conectado");
			e.printStackTrace();
		}
		
		return con;
	   }

     }
}

DAO

package br.com.teste.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import br.com.teste.bean.Pais;
import br.com.teste.factory.Conecta;


public class PaisDAO {
	
	public void inserir(Pais p) {
	
     String sql = "INSERT INTO tb_pais (cd_pais,ds_pais) VALUES (?,?)";
    
     Conecta conx = new Conecta();
     Connection con = conx.getConexao();
    	
		try {
	
			PreparedStatement stm = con.prepareStatement(sql);
			stm.setInt(1, p.getCodigo());
			stm.setString(2, p.getDescricao());
			stm.execute();
			stm.close();
			con.close();
			
		} catch (SQLException e) {
			
			System.out.println("Não inseriu");
			
		}
	}
	
}

Servlet:

package br.com.teste.servlet;



import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.teste.bean.Pais;
import br.com.teste.dao.PaisDAO;

public class PaisServlet extends HttpServlet {
	
	public void service(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
		
		
		String descricao = request.getParameter("descricao");
		int codigo = Integer.parseInt(request.getParameter("codigo"));
		
		
		Pais p = new Pais();
		p.setDescricao(descricao);
		p.setCodigo(codigo);
		
		
		PaisDAO dao = new PaisDAO();
		dao.inserir(p);
		
	
	}

}

FORM:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE html>

<html lang="pt-br">
	<head>
		<meta charset="utf-8">
	</head>
	
	<body>
		
		<header>Cadastro de Pais</header>
		
		<section id="formulario">
			<form name="formCadastroPais" method="post" action="cadastroPais">
				<label>Descrição:</label><input type="text" name="descricao"><br/>
				<label>Código:</label><input type="text" name="codigo"><br/>
				<input type="submit" name="button" value="Cadastrar">
				
			</form>
		</section>
		
	</body>

</html>

Stack:

anco não conectado
java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/dbteste
	at java.sql.DriverManager.getConnection(DriverManager.java:604)
	at java.sql.DriverManager.getConnection(DriverManager.java:221)
	at br.com.teste.factory.Conecta.getConexao(Conecta.java:40)
	at br.com.teste.dao.PaisDAO.inserir(PaisDAO.java:18)
	at br.com.teste.servlet.PaisServlet.service(PaisServlet.java:34)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Fev 14, 2013 10:07:45 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [cadastroPais] in context with path [/testeqas] threw exception
java.lang.NullPointerException
	at br.com.teste.dao.PaisDAO.inserir(PaisDAO.java:22)
	at br.com.teste.servlet.PaisServlet.service(PaisServlet.java:34)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Você adicinou o driver do postgres na pasta lib? Prq esse erro está ocorrendo devido ao fato da sua aplicação não encontrar o jar no path da aplicação.

Ramon, boa noite.

Coloquei sim, esta na pasta lib e carregado na Web App Libraries. =/

Adiciona essa linha na classe responsavel por criar a conexão:

Class.forName("com.postgres.jdbc.Driver");
E vê se dá certo.

Ta usando tomcat 6 ou 7 ?

[quote=Ramon Pires]Adiciona essa linha na classe responsavel por criar a conexão:

Class.forName("com.postgres.jdbc.Driver");
E vê se dá certo.[/quote]

PostgreSQL nao se declara dessa forma, o certo é org.postgresql.Driver.

Mais antes de voce usar a Class.forName(), so responda se voce usa tomcat 6 ou 7, porque da pra resolver usando um método mais atual.

Ramon, era exatamente isso.

Vlw… porem só o caminho que era (“org.postgresql.Driver”);

Obrigado.

Vitor, mude o Class.forName por DriverManager.registerDriver.

Tanto faz da na mesma, so tente usar mais adiante nos seus estudos um datasource.