Boa tarde pessoal,
Estou com o seguinte problema.
Preciso fazer auditoria do meu sistema. Optei por usar os Callbacks do JPA, @PostLoad, @PostPersist, etc. O que está acontecendo é que ao interceptar algum evento, quando preciso fazer um Select, ou tentar persistir alguma coisa, dentro dos meu método que monitoram os eventos, eu levo um nullpointer na fussa.
O meu interesse é o seguinte: Após o usuário realizar alguma ação, seja cadastrar, deletar ou editar … eu tenho q armazenar o que ele fez, os dados que foram adicionados, ou alterados ou deletados.
A minha classe listener intercepta as ações corretamente, mas quando preciso fazer alguma transação com a base de dados dentro dos métodos anotados, acontece a exceção no meu método logar da minha classe Managed Bean onde gerencio essa parte de login do Sistema
Estou monitorando minha Entidade Login. Quando inicio o sistema, o usuario faz login via Managed Bean, e paralelamente há essa interceptação de evento na Entidade Login via minha classe Listener.
Vou postar minha classe Listener:
@Stateless
public class LogSistemaListener implements Serializable{
private LogSistemaGeral logSistema;
private DataHora dataHora;
@EJB
private LogSistemaGeralFacadeLocal logDao;
@EJB
private PersisteLog persistir;
@EJB
private Sessao sessao;
public LogSistemaListener() {
logSistema = new LogSistemaGeral();
dataHora = new DataHora();
}
// Método utilizado para monitorar a entidade logo após a inserção
@PostPersist
void monitorLogAcao(Object entidade) {
if (entidade.getClass().getSimpleName().equals("Pivo")){
// aqui veria a parte de inserção na tabela do banco
}
}
//Método utilizado para monitorar o login no sistema
@PostLoad
void monitorLogInicial(Object entidade) {
if (entidade.getClass().getSimpleName().equals("Login")) {
Login obj = (Login) entidade;
logSistema.setDataLog(dataHora.dataSistema());
logSistema.setHoraEntrada(dataHora.horaSistema());
logSistema.setUsuario(obj.getNome());
logDao.create(logSistema);
}
}
}
método logar da minha classe Managed Bean:
public String login() {
usuarioLogado = login.logar(nome, senha);
getPermissao();
if (usuarioLogado != null && usuarioLogado.getIsstatus() == true) {
return "/home.xhtml?faces-redirect=true";
} else {
return "/errogeral.xhtml?faces-redirect=true";
}
}
Será que o problema seria nessa parte teria a ver com JPA e o Servlet do JSF ?