如何在WildFly 8.2中使用AOP

时间:2015-03-11 18:04:09

标签: aop aspectj wildfly wildfly-8

我想记录控制器中某些方法的执行时间 现在我只想弄清楚所以我不记录但是打印,并且它适用于所有方法。
我有一个Profiler类:

@Aspect
public class Profiler {

    @Pointcut("execution(public * *(..))")
    public void methods() {}

    @Around("methods()")
    public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();
        Object result = joinPoint.proceed();
        System.out.println(joinPoint.getSignature() + " " + (System.currentTimeMillis() - start));
        return result;
    }
}

我的pom.xml包含aspectjrt版本1.8.5
我没有使用Spring。

我尝试了几十种注释组合,如@Provider,@ ApplicationScoped,@ Initialized(ApplicationScoped.class),@ Name。 我尝试使用javax.ws.rs.core.Application,jboss-aop.xml等。
没有任何作用(但没有错误): - (

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

Java EE 7完全不支持AOP,但使用拦截器通常可以达到同样的效果。

有关详情,请查看InterceptorsCDI规范。

答案 1 :(得分:0)

AOP的最后一个版本是https://www.mssqltips.com/sqlservertip/2972/sql-server-reporting-services-reportitems-collection/,是released in 2010之前的一年。

Java 7 was released或更高,所以不幸的是,您的问题的答案似乎

AOP用于操作Java字节码,Java 6和Java 7字节码将不同。这将使AOP库与6

之后的Java版本不兼容