Problemas com lançamento de Excpetion

1 resposta
S

Bom dia Galera,

Estou tendo problema com uma duvida simples de ser resolvida.

é o seguinte tenhum um projeto Corporativo onde aramazeno todas as minhas logicas de negócios e outro projeto web que faz referencia a este projeto.

Estou tendo problemas no momento em que ocorre uma excessão no meu componente EJB e o mesmo não esta retornando a exception remota no meu projeto WEB.

Segue um exemplo da minha implementações abaixo:

Estou utilizando EJB3 + JSF

Exemplo - Interface Remota

@Remote
public interface EJBFinanceiroFachada {
    public void salvar(Financeiro financeiro) throws RemoteException;
}

Exemplo - Implementação da Interface Remota

@Stateless
public class EJBFinanceiroImpl implements EJBFinanceiroFachada {
    @PersistenceContext
    private EntityManager em;
    Query q = null;
    
    public void salvar(Financeiro financeiro)throws RemoteException {
        try {
            em.persist(em.merge(financeiro));
        } catch (RemoteException e) {
            System.out.println("Houve erro ao salvar o lançamento financeiro" + e.getMessage());
        }
 
}

Exemplo - Camada Web

public void salvar() throws NamingException, RemoteException{
        try {
            InitialContext ctx = new InitialContext();
            EJBFinanceiroFachada financeiroEJB = (EJBFinanceiroFachada) ctx.lookup(GeraString.EJB_FINANCEIRO_IMPL_REMOTE);
            financeiroEJB.salvar(financeiroBean);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, GeraString.MSG_OPERACAO_REALIZADA_SUCESSO, null));
        } catch (RemoteException  e) {
            System.out.println("Houve erro na confirmação no lançamento do contas a pagar: " + e.getCause());
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, GeraString.MSG_SUCESSO_CANCELAMENTO_OPERACAO, null));
        } 
    }

Na minha camada de negócios estou forçando um erro mais o mesmo não esta sendo lançado na camada web e capturado pelo catch. ?

Valeu Galera,

1 Resposta

Jair_Rillo_Junior

Dei um olhada rápida e verifiquei que no seu projeto EJB você está tratando (usando o catch) para capturar a RemoteException e depois não está lançando ela novamente.
Faça o seguinte

public void salvar(Financeiro financeiro)throws RemoteException {  
  try {  
    em.persist(em.merge(financeiro));  
  } catch (RemoteException e) {  
    System.out.println("Houve erro ao salvar o lançamento financeiro" + e.getMessage());  
    throw e; //re-lança a remoteexception
  }     
}
Criado 29 de setembro de 2009
Ultima resposta 29 de set. de 2009
Respostas 1
Participantes 2