Podemos utilzar la filosofía de Seam de interceptar todo, para cronometrar nuestra aplicación y comprobar en que métodos se producen retardos.
- Creamos una clase que extienda de org.jboss.seam.ejb.SeamInterceptor es decir la clase que utiliza Seam para interceptar los componentes de la aplicacion:
- public class MiaoInterceptor extends SeamInterceptor {
@AroundInvoke
public Object aroundInvoke(InvocationContext invocation) throws Exception
{
if(invocation.getTarget().getClass().getPackage().toString().contains("es.miao")){
long l = System.currentTimeMillis();
String invocacion=invocation.getTarget().getClass().getSimpleName()+"."+invocation.getMethod().getName()+"()";
System.out.println("INICIANDO: "+invocacion);
Object o = invocation.proceed();
long ll = System.currentTimeMillis();
System.out.println("FINALIZANDO: "+invocacion+" Tiempo total: "+(ll-l)+" milisegundos");
return o;
}
return invocation.proceed();
}
} - Cambiar en el ejb-jar.xml el interceptor de seam por el nuestro
- <?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
version="3.0">
<interceptors>
<interceptor>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor>
<interceptor>
<interceptor-class>es.miao.MiaoInterceptor</interceptor-class>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor-binding>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>es.miao.MiaoInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>
</ejb-jar>
No hay comentarios:
Publicar un comentario