Problemas com conexão ao banco com o pool

2 respostas
M

Pessoal, criei meu pool no Tomcat e estava funcionando tudo belezinha, mas agora não consegue conectar mais pois os servlets, não reconhecem mais a classe Conexao.

Alguém pode me ajudar?

package util;

import java.sql.*;   

import javax.naming.InitialContext;
import javax.sql.DataSource;

public class Conexao {         

	public static Connection con;         
	public static Statement stm;   
	public static Statement stm1;
	public static Statement stm2;
	public static ResultSet rs;
	private static String res = "";         

	public Conexao() {       

		try {         
			InitialContext ctx = new InitialContext();
			DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/bdportal");

			con = ds.getConnection();
			stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
			stm1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
			stm2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

			res = "Conexão efetuada com sucesso";         


		} catch (Exception e) {         
			res = "não foi possível conectar ao banco" + e.getMessage();         
		}         
	}         

	public String getSituacao(){         
		return res;           
	}     
}

Esse é o meu servet que faz o login.

package loginControle;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import util.*;

/**
 * Servlet implementation class Logar
 */
public class Logar extends HttpServlet {


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String usuario = request.getParameter("usuario");
		String senha = request.getParameter("senha");

		RequestDispatcher rd = null;

		new Conexao(); 
		
                                ResultSet rsLogin = null;
		try {
			rsLogin = Conexao.stm.executeQuery("SELECT * FROM usuarios WHERE username = '"+usuario+"' AND senha = '"+senha+"'");
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		try {
			if(rsLogin.next()){ 
				
				String userSession = rsLogin.getString("username");
				String senhaSession = rsLogin.getString("senha");
				String nomeSession = rsLogin.getString("nome_usuario");
				String areaCqaSession = rsLogin.getString("area_cqa");
				String tecnologiaSession = rsLogin.getString("tecnologia");

				Usuario user = new Usuario();
				user.setUsuario(userSession);
				user.setSenha(senhaSession);
				
				if (user.verificaUsuario()){

					HttpSession sessao = request.getSession();
					sessao.setAttribute("login_portal", userSession);
					sessao.setAttribute("nomeSession", nomeSession);
					sessao.setAttribute("areaCqaSession", areaCqaSession);
					sessao.setAttribute("tecnologiaSession", tecnologiaSession);
					rd = request.getRequestDispatcher("/main.jsp");
					rd.forward(request, response);
					
				}
			}
				else{
					request.setAttribute("msg", "Usuário ou Senha inválidos!");
					rd = request.getRequestDispatcher("/index.jsp");
					rd.forward(request, response);
				}


		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request,response);

	}

}

A linha 34 do servlet Logar é essa:

rsLogin = Conexao.stm.executeQuery("SELECT * FROM usuarios WHERE username = '"+usuario+"' AND senha = '"+senha+"'");

Está dando esse erro.

java.lang.NullPointerException
	at loginControle.Logar.doGet(Logar.java:34)
	at loginControle.Logar.doPost(Logar.java:81)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	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:128)
	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:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)

Desde já agradeço

Marcos

2 Respostas

T

oi Marcos_rhs
esta aparecendo a mensagem “Conexão efetuada com sucesso” ?

Acredito q o null poiter esta acontecendo ao recuperar o DataSource tenta fazer o lookup em duas etapas ex:

Context envContext = (Context) initContext.lookup(“java:comp/env”);
DataSource ds = (DataSource) envContext.lookup(“jdbc/bdportal”);

Obs
A modo q esta sendo feita a consulta proporciona SQL Injection.
Não tem um finnaly na operacao isso acho q não é bom.

M

tiozao, continua dando o mesmo erro… acho que não está conectando no pool.

Alguma outra dica?

Criado 4 de setembro de 2009
Ultima resposta 4 de set. de 2009
Respostas 2
Participantes 2