Pessoal mais um vez esto com problema em minha aplicação que não responde da mesma forma que responde a aplicação da videoaula. Segue ai o meu código da LogInterceptador e de como está a anotação @interceptors na minha classe DAO.
Interceptador:
package br.com.caelum.livraria.interceptador;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class LogInterceptador {
@AroundInvoke
public Object intercepta(InvocationContext context) throws Exception {
Long millis = System.currentTimeMillis();
//chamada do método dao
Object object = context.proceed();
System.out.println("Tempo Gasto: " + (System.currentTimeMillis() - millis));
return object;
}
}
Classe DAO:
package br.com.caelum.livraria.dao;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Inject;
import javax.interceptor.Interceptors;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.NotSupportedException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import br.com.caelum.livraria.interceptador.LogInterceptador;
import br.com.caelum.livraria.modelo.Autor;
@Stateless
//@TransactionManagement(TransactionManagementType.BEAN)
@TransactionManagement(TransactionManagementType.CONTAINER) // opcional
@Interceptors({LogInterceptador.class})
public class AutorDao {
@PersistenceContext
private EntityManager manager;
@PostConstruct
void aposCriacao() {
System.out.println("AutorDao foi criado!");
}
public void salva(Autor autor) {
manager.persist(autor);
System.out.println("Salvou autor " + autor.getNome());
// throw new RuntimeException("Serviço externo deu erro!");
}
public List<Autor> todosAutores() {
return manager.createQuery("select a from Autor a", Autor.class).getResultList();
}
public Autor buscaPelaId(Integer autorId) {
Autor autor = this.manager.find(Autor.class, autorId);
return autor;
}
}
A saída no console exatamente após executar o método no dao:
15:07:55,068 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
15:07:55,074 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
15:07:55,082 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
15:07:55,087 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
15:07:55,093 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
15:07:55,098 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_
15:07:55,102 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Salvando autor Marcos Ribeiro
15:07:55,113 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: insert into Autor (nome) values (?)
15:07:55,153 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Salvou autor Marcos Ribeiro
15:07:55,209 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select autor0_.id as id0_, autor0_.nome as nome0_ from Autor autor0_