Java.lang.ClassCastException

Olá pessoal, to com um probleminha na minha aplicação J2EE. Vou descreve-lá um pouco…

To trabalhando no padrão MVC e utilizando os componentes básicos que formam o J2EE: Servlets, JSP;

Esse é o erro que aparece após o usuário ter efetuado o login…

java.lang.ClassCastException: java.util.ArrayList cannot be cast to pessoa.PessoaBean
Servlet.ServletVerificaDados.service(ServletVerificaDados.java:61)

Esse código abaixo é da Servlet, que retorna com os dados do usuário após ele ter efetivado o login…
É nesse servlet que aparece o erro após o usuário informar o login, essa é a linha 61…

 //verificando atraves do metodo "listaPessoaLogin" os dados recebidos pelo sistema
  pessoaBean = (PessoaBean) pessoaFacade.listaPessoaLogin(pessoaBean);  

Aqui é minha Classe PessoaBean…

/*
 * PessoaBean.java
 *
 *
 * @author Maykon Diego
 */

package pessoa;

/* ------importando as classe necessarias para ser utilizada------ */

//classe FuncaoBean
import Funcao.FuncaoBean;

//classe PessoaBean
public class PessoaBean
{
    
    //declarando atributos da classe PessoaBean
    private Integer idPessoa;
    private String  nomePessoa;
    private String loginPessoa;
    private String enderecoPessoa;
    private String bairroPessoa;
    private String cidadePessoa;
    private String dataNascPessoa;    
    private String senhaPessoa;
    private String lembsenhaPessoa;
    private String emailPessoa;
    private Integer telPessoa;
    private Integer celPessoa;
    private Integer rgPessoa;
    private String cpfPessoa;
    private String matriPessoa;
    private Integer codEstPessoa;
    private Integer codTipoEnd;
    private FuncaoBean funcaoPes;
    
    /** instancia da classe PessoaBean */
    public PessoaBean() {
    }
       
    /* ------ M�todos get e set de idPessoa ------ */
    public Integer getIdPes() {
      return idPessoa;
    }
    
    public void setIdPes(Integer id) {
      this.idPessoa = id;
    }
    
    
    /* ------ M�todos get e set de nomePessoa ------ */
    public String getNomePes() {
      return nomePessoa;
    }
    
    public void setNomePes(String nome) {
      this.nomePessoa = nome;
    }
    
    
    
     /* ------ M�todos get e set de loginPessoa ------ */
    public String getLoginPes() {
      return loginPessoa;
    }
    
    public void setLoginPes(String login) {
      this.loginPessoa = login;
    }

    
     /* ------ M�todos get e set de EnderecoPessoa ------ */
    public String getEndPes() {
      return enderecoPessoa;
    }
    
    public void setEndPes(String end) {
      this.enderecoPessoa = end;
    }


     /* ------ M�todos get e set de bairroPessoa ------ */
    public String getBairroPes() {
      return bairroPessoa;
    }
    
    public void setBairroPes(String bair) {
      this.bairroPessoa = bair;
    }

  
     /* ------ M�todos get e set de cidadePessoa ------ */
    public String getCidPes() {
      return cidadePessoa;
    }
    
    public void setCidPes(String cidade) {
      this.cidadePessoa = cidade;
    }

  
     /* ------ M�todos get e set de dataNascPessoa ------ */
    public String dataNascPes() {
      return this.dataNascPessoa;
    }
    
    public void setDataNascPes(String data) {
      this.dataNascPessoa = data;
    }

     /* ------ M�todos get e set de senhaPessoa ------ */
    public String getSenPes() {
      return senhaPessoa;
    }
    
    public void setSenPes(String sen) {
      this.senhaPessoa = sen;
    }
    
    
     /* ------ M�todos get e set de lembSenhaPessoa ------ */
    public String getLembSenPes() {
      return lembsenhaPessoa;
    }
    
    public void setLembSenPes(String lembSen) {
      this.lembsenhaPessoa = lembSen;
    }
    

     /* ------ M�todos get e set de emailPessoa ------ */
    public String getEmailPes() {
      return emailPessoa;
    }
    
    public void setEmailPes(String email) {
      this.emailPessoa = email;
    }

  
     /* ------ M�todos get e set de telPessoa ------ */
    public Integer getTelPes() {
      return telPessoa;
    }
    
    public void setTelPes(Integer tel) {
      this.telPessoa = tel;
    }
    

     /* ------ M�todos get e set de celPessoa ------ */
    public Integer getCelPes() {
      return celPessoa;
    }
    
    public void setCelPes(Integer cel) {
      this.celPessoa = cel;
    }
    
    
     /* ------ M�todos get e set de rgPessoa ------ */
    public Integer getRgPes() {
      return this.rgPessoa;
    }
    
    public void setRgPes(Integer rg) {
      this.rgPessoa = rg;
    } 
    

    
     /* ------ M�todos get e set de cpfPessoa ------ */
    public String getCpfPes() {
      return this.cpfPessoa;
    }
    
    public void setCpfPes(String cpf) {
      this.cpfPessoa = cpf;
    } 

  
     /* ------ M�todos get e set de matriPessoa ------ */
    public String getMatriPes() {
      return matriPessoa;
    }
    
    public void setMatriPes(String matri) {
      this.matriPessoa = matri;
    }

    /*------- Metodos get e set de codTipoEnd ------ */
    public Integer getCodTipoEnd(){
        return this.codTipoEnd;
    }
    public void setCodTipoEnd(Integer cod){
        this.codTipoEnd = cod;
    }
    
    /* ------ M�todos get e set de codEstPessoa ----- */
    public Integer getCodEstPessoa(){
        return this.codEstPessoa;
    }
    public void setCodEstPessoa(Integer cod){
        this.codEstPessoa = cod; 
    }
        
    /* ------ M�todos get e set de funcaoPes ------ */ 
    public FuncaoBean getFuncaoPes(){
      return this.funcaoPes; 
    }
    public void setFuncaoPes(FuncaoBean funcao){
       this.funcaoPes = funcao;
    }
    
   
} //fim da classe

Essa aqui é o método da Classe PessoaFacade, que retorna os dados completo do usuário, após a verificação em PessoaDao

    //metodo que verifica o login de entrada
    public Collection listaPessoaLogin(Object to) throws SistemaException {
      //passsando o conteudo do parametro object TO para a instancia pessoaBean
      PessoaBean pessoaBean = (PessoaBean) to;
      //criando um objeto ArrayList
      ArrayList pessoas = new ArrayList();
      //criando uma instancia da classes PessoaDao
      this.pessoaDao = new PessoaDao();
      
      //bocos try e cach para tratamento de dados
      try{
       pessoas = (ArrayList)  this.pessoaDao.listaPessoaLogin(pessoaBean);
                 
       return pessoas;         
      }
      catch(Exception e){
         e.printStackTrace();
      }
      
      return null;
    }

Esse método é da classe PessoaDao, que verifica através da consulta sql se o login do usuário está correto… E passa os dados para o objeto ArrayList pessoas, os dados do usuário e retorna o Objeto pessoas…

  //m�todo que verifica o login do usuario
    public Collection listaPessoaLogin(Object to) throws DaoException{
       
       this.pessoaBean = (PessoaBean) to;
        
       String sql = "select * from pessoa AS pes INNER JOIN funcao_pessoa AS fu_pes ON (fu_pes.cod_pessoa=pes.cod_pessoa) WHERE login=? and matricula=? and senha=? LIMIT 1";
       
        try {
            con = ConexaoBd.getConexao();
            stm = con.prepareStatement(sql);
                                 
            stm.setString(1,this.pessoaBean.getLoginPes());
            stm.setString(2,this.pessoaBean.getMatriPes());
            stm.setString(3,this.pessoaBean.getSenPes());
            
            this.pessoas = new ArrayList();
            
            ResultSet rs = stm.executeQuery();
                       
             if(rs.next()){
                PessoaBean pessoaBean = new PessoaBean();
                pessoaBean.setIdPes(new Integer(rs.getInt("pes.cod_pessoa")));
                pessoaBean.setNomePes(rs.getString("pes.nome"));
                pessoaBean.setEndPes(rs.getString("pes.endereco"));                
                pessoaBean.setBairroPes(rs.getString("pes.bairro"));
                pessoaBean.setCidPes(rs.getString("pes.cidade"));
                pessoaBean.setDataNascPes(rs.getString("pes.data_nasc"));
                pessoaBean.setEmailPes(rs.getString("pes.email"));
                pessoaBean.setTelPes(new Integer(rs.getInt("pes.telefone")));
                pessoaBean.setCelPes(new Integer(rs.getInt("pes.celular")));
                pessoaBean.setRgPes(new Integer(rs.getInt("pes.rg")));
                pessoaBean.setCpfPes(rs.getString("pes.cpf"));
                                            
                this.pessoas.add(pessoaBean);
            }             

            return this.pessoas;
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ConexaoBd.fechar(stm);
            ConexaoBd.fechar(con);
        } 
        
       return null;
    }

Há varios dias to tentando decifrar esse erro, já alterei o código várias vezes e não consigo acertar… Por favor colaborem com o conhecimento de vcs…

maykon19,
não duplique os posts. Este erro está ocorrendo na classe ServletVerificaDados.java na linha 61.
Você está pegando um objeto ArrayList e convertendo para PessoaBean. Por isso está gerando essa exception.
Eu não li o seu post todo. Somente li o erro. Tente fazer o mesmo! Abraço.

No seu DAO pq vc esta retornando um ArrayList se é pra encontrar apenas um usuário?

Ao invés de retornar o ArrayList “pessoas”, retorne o objeto PessoaBean “pessoaBean”, terá que mudar a assinatura do método tbm.