Erro ao salvar no postgresql. Poll de conexões npe ou objeto con nulo?

[b]Estou com problema referente a uma app web em que utilizo um pool de
conexões para fazer as operações crud no postgresql. No módulo cliente o crud funciona normalmente, mas na parte de produto, ao tentar gravar o produto a console apresenta um null pointer exception. Não consegui identificar se o problema se refere ao objeto connection con está nulo ou se é algum tipo de erro de cast do postgresql ou do java.

Alguém poderia me dar uma dica de identicar e de como fazer o tratamento desse problema.[/b]

Segue abaixo o erro apresentado na console e as classe da minha aplicação:

[code]

java.lang.NullPointerException
at br.com.siscom.produto.model.command.CadastrarProduto.execute(CadastrarProduto.java:28)
at br.com.siscom.controller.SiscomController.processarRequisicao(SiscomController.java:46)
at br.com.siscom.controller.SiscomController.doGet(SiscomController.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

Abaixo a classe que implementa a interface command

package br.com.siscom.produto.model.command;

import java.sql.SQLException;

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

import br.com.siscom.model.bean.Produto;
import br.com.siscom.model.command.InterfaceCommand;

import br.com.siscom.produto.model.dao.ProdutoDAO;

public class CadastrarProduto implements InterfaceCommand {
private ProdutoDAO produtoDAO;

public CadastrarProduto(ProdutoDAO produtoDAO) {
	this.produtoDAO = produtoDAO;
}


@Override
public String execute(HttpServletRequest request,HttpServletResponse response) {

	try{
		Produto produto = new Produto();

		produto.setNome_produto(request.getParameter("nome_produto").equals("") ? null :
			request.getParameter("nome_produto"));
		produto.setPreco_venda(request.getParameter("preco_venda").equals("") ? null:
			Float.valueOf(request.getParameter("preco_venda")));
		produto.setPreco_compra(request.getParameter("preco_compra").equals("") ? null :
			Float.valueOf(request.getParameter("preco_compra")));
		produto.setSaldo_estoque_atual(request.getParameter("saldo_estoque_atual").equals("") ? null :
			Float.valueOf(request.getParameter("saldo_estoque_atual")));
		produto.setQtd_atual(request.getParameter("qtd_atual").equals("") ? null :
			Integer.valueOf(request.getParameter("qtd_atual")));
		produto.setQtd_max(request.getParameter("qtd_max").equals("") ? null :
			Integer.valueOf(request.getParameter("qtd_max")));
		produto.setQtd_min(request.getParameter("qtd_min").equals("") ? null :
			Integer.valueOf(request.getParameter("qtd_min")));

		produtoDAO.salvar(produto);
		request.setAttribute("mensagem", " Produto " +produto.getNome_produto()+ 
		" Salvo com sucesso!");

	}catch(SQLException e){
		request.setAttribute("mensagem", " Erro ao Salvar Dados do Cliente! " +e.getMessage());
		e.printStackTrace();
	}catch(NumberFormatException e){
		request.setAttribute("mensagem", " Valor Inválido: " +e.getMessage());
		e.printStackTrace();

	}

	return "cadastrarProduto.jsp";
}

}

Abaixo a classe ProdutoDAO

package br.com.siscom.produto.model.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import br.com.siscom.conexao.InterfacePool;
import br.com.siscom.model.bean.Produto;

public class ProdutoDAO implements InterfaceProdutoDAO {
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
private Statement st;
private String sql = null;

private InterfacePool pool;

public ProdutoDAO(InterfacePool pool){
	this.pool = pool;
	
}
	
public void atualizar(Produto produto) throws SQLException {
	con = pool.getConnection();
	sql = "UPDATE produto SET nome_produto = ?,preco_venda = ?," +
			"preco_compra = ?, saldo_estoque_atual = ?,qtd_atual = ?," +
			"qtd_max = ?,qtd_min = ? WHERE id_produto = ?";
	
	try {
		ps = con.prepareStatement(sql);
		ps.setString(1, produto.getNome_produto());
		ps.setFloat(2, produto.getPreco_venda());
		ps.setFloat(3, produto.getPreco_compra());
		ps.setFloat(4, produto.getSaldo_estoque_atual());
		ps.setInt(5, produto.getQtd_atual());
		ps.setInt(6, produto.getQtd_max());					
		ps.setInt(7, produto.getQtd_min());
		ps.setInt(8, produto.getId_produto());
								
		ps.executeUpdate();
		ps.close();
	} finally {
		pool.liberarConnection(con);
	}
}

@Override
public void excluir(Integer id_produto) throws SQLException {
	con = pool.getConnection();
	ps = null;
	sql = "DELETE FROM produto WHERE id_produto = ?";
	
	try {
		ps = con.prepareStatement(sql);
		ps.setInt(1, id_produto);
		ps.executeUpdate();
		ps.close();
	} finally {
		pool.liberarConnection(con);
	}		
}

@Override
public Produto getProduto(Integer id_produto) throws SQLException {
	con = pool.getConnection();
	ps = null;
	rs = null;
	sql = "SELECT * FROM produto WHERE id_produto = ?";
	Produto produto = null;
	
	try {
		ps = con.prepareStatement(sql);
		ps.setInt(1, id_produto);
		rs = ps.executeQuery();
		
		produto= new Produto();			
		while(rs.next()) {
			produto.setId_produto(rs.getInt("id_produto"));
			produto.setNome_produto(rs.getString("nome_produto"));
			produto.setPreco_venda(rs.getFloat("preco_venda"));
			produto.setPreco_compra(rs.getFloat("preco_compra"));
			produto.setSaldo_estoque_atual(rs.getFloat("saldo_estoque_atual"));
			produto.setQtd_atual(rs.getInt("qtd_atual"));
			produto.setQtd_max(rs.getInt("qtd_max"));
			produto.setQtd_min(rs.getInt("qtd_min"));
	}
	
		rs.close();			
		ps.close();
	} finally {
		pool.liberarConnection(con);
	}
	return produto;
}

@Override
public ArrayList<Produto> getProdutos() throws SQLException {
	ArrayList<Produto> resultado = new ArrayList<Produto>();
	sql = "SELECT * FROM produto;";
	con = pool.getConnection();
	st = con.createStatement();
	rs = st.executeQuery(sql);

	try {
		while (rs.next()) {

			Produto produto = new Produto();
			produto.setId_produto(rs.getInt("id_produto"));
			produto.setNome_produto(rs.getString("nome_produto"));
			produto.setPreco_venda(rs.getFloat("preco_venda"));
			produto.setPreco_compra(rs.getFloat("preco_compra"));
			produto.setSaldo_estoque_atual(rs.getFloat("saldo_estoque_atual"));
			produto.setQtd_atual(rs.getInt("qtd_atual"));
			produto.setQtd_max(rs.getInt("qtd_max"));
			produto.setQtd_min(rs.getInt("qtd_min"));

			resultado.add(produto);
		}
		rs.close();
		st.close();
	} finally {
		pool.liberarConnection(con);
	}
	return resultado;
}

public void salvar(Produto produto) throws SQLException {
	Connection con = pool.getConnection();
	PreparedStatement ps;
	String sql = "insert into produto (nome_produto,preco_venda,preco_compra,saldo_estoque_atual, "
		+"qtd_atual,qtd_max,qtd_min) values (?,?,?,?,?,?,?);";
				
	try {
		ps = con.prepareStatement(sql);
	
		ps.setString(1,produto.getNome_produto());
		ps.setFloat(2,produto.getPreco_venda());
		ps.setFloat(3,produto.getPreco_compra());
		ps.setFloat(4, produto.getSaldo_estoque_atual());
		ps.setInt(5,produto.getQtd_atual());
		ps.setInt(6,produto.getQtd_max());
		ps.setInt(7,produto.getQtd_min());
		ps.executeUpdate();
		ps.close();
		
	} finally {
			pool.liberarConnection(con);
	}
}

}

Abaixo A Interface que define os métodos do DAO:

package br.com.siscom.produto.model.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import br.com.siscom.model.bean.Produto;

public interface InterfaceProdutoDAO {

public abstract void excluir(Integer id_produto)throws SQLException;
public abstract void salvar(Produto produto)throws SQLException;
public abstract void atualizar(Produto produto)throws SQLException;
public abstract Produto getProduto(Integer id_produto)throws SQLException;
public abstract ArrayList<Produto> getProdutos()throws SQLException;

}

Abaixo o Bean produto:

package br.com.siscom.model.bean;

import java.util.ArrayList;

public class Produto {
private ArrayList itens;
private int id_produto;
private String nome_produto;
private float preco_venda;
private float preco_compra;
private float saldo_estoque_atual;
private int qtd_atual;
private int qtd_max;
private int qtd_min;

public Produto() {
	super();
}

public Produto(ArrayList<ItemPedidoVenda>itens){
	itens = new ArrayList<ItemPedidoVenda>();
	
}
	
public int getId_produto() {
	return id_produto;
}

public void setId_produto(int id_produto) {
	this.id_produto = id_produto;
}


public String getNome_produto() {
	return nome_produto;
}

public void setNome_produto(String nome_produto) {
	this.nome_produto = nome_produto;
}

public float getPreco_venda() {
	return preco_venda;
}


public void setPreco_venda(float preco_venda) {
	this.preco_venda = preco_venda;
}

public float getPreco_compra() {
	return preco_compra;
}

public void setPreco_compra(float preco_compra) {
	this.preco_compra = preco_compra;
}

public int getQtd_atual() {
	return qtd_atual;
}

public void setQtd_atual(int qtd_atual) {
	this.qtd_atual = qtd_atual;
}

public int getQtd_max() {
	return qtd_max;
}

public void setQtd_max(int qtd_max) {
	this.qtd_max = qtd_max;
}

public int getQtd_min() {
	return qtd_min;
}

public void setQtd_min(int qtd_min) {
	this.qtd_min = qtd_min;
	
	}

public void setSaldo_estoque_atual(float saldo_estoque_atual){
	this.saldo_estoque_atual = saldo_estoque_atual;
}

public float getSaldo_estoque_atual() {
	return saldo_estoque_atual;
}


public ArrayList<ItemPedidoVenda> getItens() {
	return itens;
}


public void setItens(ArrayList<ItemPedidoVenda> itens) {
	this.itens = itens;
}

Abaixo o Controller:

package br.com.siscom.controller;

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.siscom.conexao.InterfacePool;
import br.com.siscom.conexao.Pool;
import br.com.siscom.model.command.InterfaceCommand;
import br.com.siscom.model.helper.SiscomHelper;

public class SiscomController extends HttpServlet {
private static final long serialVersionUID = 1L;

private InterfacePool pool = new Pool();
private SiscomHelper siscomHelper = new SiscomHelper(pool);

public SiscomController() {
    super();
   
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {
	processarRequisicao(request,response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {
	processarRequisicao(request,response);
}

private void processarRequisicao(HttpServletRequest request, HttpServletResponse response)
	throws ServletException,IOException{
 	  	try{
			siscomHelper.setRequest(request);
			InterfaceCommand comando = siscomHelper.getCommand();
			String pagina = comando.execute(request, response);
			request.getRequestDispatcher(pagina).include(request, response);
 	  	}catch(NullPointerException e){
 	  		e.printStackTrace();
 	  	}
				
 }

}

Abaixo o Helper:

package br.com.siscom.model.helper;

import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;

import br.com.siscom.conexao.InterfacePool;
import br.com.siscom.model.command.AtualizarCliente;
import br.com.siscom.model.command.CadastrarCliente;
import br.com.siscom.model.command.ConsultarCliente;
import br.com.siscom.model.command.EditarCliente;
import br.com.siscom.model.command.ExcluirCliente;
import br.com.siscom.model.command.IniciarSiscom;
import br.com.siscom.model.command.InterfaceCommand;
import br.com.siscom.model.command.ListarDadosCliente;
import br.com.siscom.model.dao.ClienteDAO;
import br.com.siscom.produto.model.command.AtualizarProduto;
import br.com.siscom.produto.model.command.CadastrarProduto;
import br.com.siscom.produto.model.command.EditarProduto;
import br.com.siscom.produto.model.command.ExcluirProduto;
import br.com.siscom.produto.model.command.ListarDadosProduto;
import br.com.siscom.produto.model.command.ListarTodosProdutos;
import br.com.siscom.produto.model.dao.ProdutoDAO;

public class SiscomHelper {
private HashMap<String,InterfaceCommand> mapaComandos;
private HttpServletRequest request;
private InterfacePool pool;

public SiscomHelper(InterfacePool pool) {
	super();
	this.pool = pool;
	//this.request = request;
	
	mapaComandos = new HashMap<String,InterfaceCommand>();
	mapaComandos.put("cadastrarCliente", new CadastrarCliente(new ClienteDAO(pool)));
	mapaComandos.put("consultarCliente", new ConsultarCliente(new ClienteDAO(pool)));
	mapaComandos.put("atualizarCliente", new AtualizarCliente(new ClienteDAO(pool)));
	mapaComandos.put("editarCliente",new EditarCliente(new ClienteDAO(pool)));
	mapaComandos.put("excluirClientes", new ExcluirCliente(new ClienteDAO(pool)));
	mapaComandos.put("listarDadosCliente", new ListarDadosCliente(new ClienteDAO(pool)));
	
	mapaComandos.put("atualizarProduto", new AtualizarProduto(new ProdutoDAO(pool)));
	mapaComandos.put("cadastrarProduto", new CadastrarProduto(new ProdutoDAO(pool)));
	mapaComandos.put("editarProduto", new EditarProduto(new ProdutoDAO(pool)));
	mapaComandos.put("excluirProduto", new ExcluirProduto(new ProdutoDAO(pool)));
	mapaComandos.put("listarDadosProduto",new ListarDadosProduto(new ProdutoDAO(pool)));
	mapaComandos.put("listarTodosProdutos", new ListarTodosProdutos(new ProdutoDAO(pool)));
	mapaComandos.put("iniciarSiscom", new IniciarSiscom());
}

public InterfaceCommand getCommand(){
	String cmd = request.getParameter("cmd");
	if(cmd == null)
		return mapaComandos.get("iniciarSiscom");
			return mapaComandos.get(cmd);
}

public void setRequest(HttpServletRequest request) {
	this.request = request;
}

}

Classe DataSource:

package br.com.siscom.conexao;

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

public class DataSource implements InterfaceDataSource {

private String url;
private String driver;
private String usuario;
private String senha;



public DataSource(String url, String driver, String usuario, String senha) {
	super();
	this.url = url;
	this.driver = driver;
	this.usuario = usuario;
	this.senha = senha;
	
	try {
		Class.forName(driver);
		System.out.println("Conectado ao banco de dados!");
	} catch (ClassNotFoundException e) {
		System.out.println("Classe não encontrada!");
		
	}
}


@Override
public Connection getConnection() throws SQLException {
	return DriverManager.getConnection(url,usuario,senha);
}

}

Classe Pool:

package br.com.siscom.conexao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.ResourceBundle;
import java.util.concurrent.ArrayBlockingQueue;

public class Pool implements InterfacePool{
private InterfaceDataSource ds;
private ArrayBlockingQueue conexoesLivres;
private HashMap<String,Connection> conexoesUtilizadas;
private Integer numMaxConexoes;
private ResourceBundle config;

public Pool(){
	config = ResourceBundle.getBundle("br.com.siscom.conexao.postgresql");
	
	ds = new DataSource(config.getString("url"),
			config.getString("driver"),
			config.getString("usuario"),
			config.getString("senha"));
	
	numMaxConexoes = Integer.parseInt(config.getString("numMaxConexoes"));
	
	conexoesLivres = new ArrayBlockingQueue<Connection>(numMaxConexoes, true);
	
	conexoesUtilizadas = new HashMap<String,Connection>();
	
}

@Override
public Connection getConnection() {
	Connection con = null;
	
	try{
		if(conexoesUtilizadas.size() < numMaxConexoes){
			con = conexoesLivres.poll();
			if(con == null){
				con = ds.getConnection();
			}
			else if(con.isClosed()){
				this.getConnection();
			}
			conexoesUtilizadas.put(con.toString(),con);
			
		}
	}catch(SQLException e){
		System.out.println("Problema com o Pool!");
	}
	return con;
}

@Override
public void liberarConnection(Connection con) {
	conexoesLivres.add(con);
	conexoesUtilizadas.remove(con.toString());
	
}

}

Arquivo postgresql.properties:

driver=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/siscom
usuario=siscom
senha=siscom
numMaxConexoes =1

laorso, bem vindo ao guj

  1. troque as tags por [code ], assim seu código irá ficar formatado bonito
  2. evite colocar tanto código assim, até desanima de ver. [=
  3. Seu nullpointer está nessa linha né at br.com.siscom.produto.model.command.CadastrarProduto.execute(CadastrarProduto.java:28) ? Tem como você postar oq tem nessa linha?

Desculpe pela quantidade excessiva de códigos. Segue abaixo a linha que apresenta o npe:

produto.setNome_produto(request.getParameter("nome_produto").equals("") ? null : request.getParameter("nome_produto"));

Antes eu havia colocado a linha no formato abaixo, mas estava danto null pointer exception e mudei para a linha acima e continuou
o mesmo erro de npe

produto.setNome_produto(request.getParameter("nome_produto"));

Cara, eu acho que o seu request está null.

Pq vc está usando execute? E não o método post da vida?

Utilizei o método execute do tipo String para retorna a página jsp “cadastroProduto”, assim como todas as outras páginas.
Consigo acessar normalmente, a partir da página jsp principal da aplicação, as páginas jsp colsultar produto, excluir produto, listar todos produtos e listar produto, e fazer as respectivas operações no postgresqls.

Entretanto, ao chamar a página cadastrarProduto.jsp diretamente da página principal da aplicação, ela já de início apresenta esse
erro de nullpointer exception. O estranho é que se eu chamá-la diretamente ela carrega e consigo salvar os
dados no postgresql normalmente.

Depois da sua sugestão, setei no form o método “post” e criei o método processar requisição do tipo void e no método String Execute invoquei ele, porém continua o mesmo problema na mesma linha. segue abaixo o código alterado:



	@Override
	public String execute(HttpServletRequest request,HttpServletResponse response) {

		processarRequisicao(request,response);
		return "cadastrarProduto.jsp";
	}

	@Override
	public void processarRequisicao(HttpServletRequest request,HttpServletResponse response) {
		try{
			Produto produto = new Produto();

		ERRO	=>produto.setNome_produto(request.getParameter("nome_produto").equals("") ? null :
				request.getParameter("nome_produto"));
			produto.setPreco_venda(request.getParameter("preco_venda").equals("") ? null:
				Float.valueOf(request.getParameter("preco_venda")));
			produto.setPreco_compra(request.getParameter("preco_compra").equals("") ? null :
				Float.valueOf(request.getParameter("preco_compra")));
			produto.setSaldo_estoque_atual(request.getParameter("saldo_estoque_atual").equals("") ? null :
				Float.valueOf(request.getParameter("saldo_estoque_atual")));
			produto.setQtd_atual(request.getParameter("qtd_atual").equals("") ? null :
				Integer.valueOf(request.getParameter("qtd_atual")));
			produto.setQtd_max(request.getParameter("qtd_max").equals("") ? null :
				Integer.valueOf(request.getParameter("qtd_max")));
			produto.setQtd_min(request.getParameter("qtd_min").equals("") ? null :
				Integer.valueOf(request.getParameter("qtd_min")));

			produtoDAO.salvar(produto);
			request.setAttribute("mensagem", " Produto " +produto.getNome_produto()+ 
			" Salvo com sucesso!");

		}catch(SQLException e){
			request.setAttribute("mensagem", " Erro ao Salvar Dados do Cliente! " +e.getMessage());
			e.printStackTrace();
		}catch(NumberFormatException e){
			request.setAttribute("mensagem", " Valor Inválido: " +e.getMessage());
			e.printStackTrace();

		}
	}

}

Segue também o Stacktrace: o mesmo erro, na mesma linha. Vou tentar debugar a aplicação, apesar de não ter muita experiência com o debugger e retornar os valores para você poder dar uma analisada melhor. Muítissimo obrigado pela sua atenção.

java.lang.NullPointerException
	at br.com.siscom.produto.model.command.CadastrarProduto.processarRequisicao(CadastrarProduto.java:35)
	at br.com.siscom.produto.model.command.CadastrarProduto.execute(CadastrarProduto.java:25)
	at br.com.siscom.controller.SiscomController.processarRequisicao(SiscomController.java:46)
	at br.com.siscom.controller.SiscomController.doGet(SiscomController.java:32)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)

Setei o breakpoint na linha que está apresentando erro e fiz o debug. Os objetos com seus respectivos valores estão logo abaixo.
Por gentileza, você poderia traduzir isso para mim?

Name Value
This = CadastarProduto (id=57)
produtoDAO =ProdutoDAO (id=156)
con = null
pool =Pool (id=159)
ps =null
rs =null
sql =null
st =null

Request = RequestFacade (id= 69)
Request = Request (id=80)
Attributes= HashMap<K,V> (id=82)
entrySet = null
keySet = null
loadFactor = 0.75
modCount = 1
Size = 0
Table = HashMap$Entry<K,V>[16] (id=149)
Threshold =12


Values = null

Não sei trabalhar com o debug, mas por alto percebi que os objetos con,ps,rs,sql(string de consulta) e rs estão todos com valor nulo. Apesar de conseguir conectar ao banco.

Em relação a request me corrija se eu estiver enganado, no atributo HashMap<K,V> o entrySet e o keyset se referem as chaves Key e Value? Ambos os objetos estão setados com null. O problema não deve ser na request, pois consigo acessar as outras jsp da minha aplicação.

O objeto Values, no final da tabela que eu estou te enviando, que tem o valor null é um atributo do Objeto Request que indica que ele está nulo e é aqui que se encontra o erro?

Não quero abusar da sua boa vontade, mas você poderia me explicar esses valores para que eu possa identificar e fazer o tratamento
do erro?

Mais uma vez, mutíssimo obrigado pela sua atenção!