Acabamos de passar dos 6.000 acessos ao site desde que começamos a monitorar os acessos com o analytics e não poderia deixar de agradecer enviando um post que talvez ajude a quem quer monitorar e realizar log das operações realizadas pelas chamadas ao EJB. Neste post de hoje vamos falar sobre interceptadores em EJB3.
A especificação de EJB3 define o que seriam interceptadores que adicionam a abilidade de interceptar métodos de negócio de Session Beans e de Message Drive Beans.
Segue abaixo um exemplo de um interceptador que foi implementado com o intuito de realizar um log dos métodos de negócio chamados:
A anotação @AroundInvoke indica para o sistema qual o método realizará a interceptação dos métodos de negócio./**
* Classe interceptadora que imprime os métodos de negócio
* que estão sendo chamandos durante a execução do programa.
*
* @author samuelmd
*
*/
public class LogJPAInterceptor {
@AroundInvoke
public Object logInterceptor(InvocationContext invocation)throws Exception {
Logger logger = Logger.getLogger(LogJPAInterceptor.class);
logger.debug(" ---------------------------- ");
logger.debug("Chamando método " + invocation.getMethod()
+ " da classe " + invocation.getTarget());
Object[] objetos = invocation.getParameters();
if (objetos != null) {
logger.debug("Métodos com os parâmetros :");
for (Object objeto : objetos) {
if (objeto != null) {
logger.debug(objeto.getClass().getName() + " : "
+ objeto.toString());
}
}
}
logger.debug(" ---------------------------- ");
return invocation.proceed();
}
}
Interceptadores podem ser adicionados de 3 maneiras diferentes assim como mostrados abaixo:
- Default. Só podem ser adicionados através do descritor de implantação assim como definido abaixo:
<assembly-descriptor>
<!—Interceptadores default -->
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>
com.thinkworks.interceptor.LogJPAInterceptor
</interceptor-class>
</interceptor-binding>
</assembly-descriptor> - Classe. Podem ser adicionados tando pelo descritor de implantação quanto pela anotação @Interceptors ({LogJPAInterceptor.class}) em cima da classe.
- Método. Definido pela anotação @Interceptors ({LogJPAInterceptor.class}) em cima da classe.
É isto aí pessoal. Mais informações podem ser encontradas em http://docs.jboss.org/ejb3/app-server/tutorial/interceptor/interceptor.html.
Qualquer problema avisem…
Nenhum comentário:
Postar um comentário