AspectJ与JSF1.2

时间:2011-10-14 12:16:10

标签: netbeans-6.9 jsf-1.2

我正在使用 JSF1.2 框架。 我没有将我的应用程序与Spring集成。我想对方法调用进行性能分析。我的应用程序文件是 EAR(EJB + WAR)。我可以在拦截器的帮助下获得会话bean方法的执行时间但是对于WAR模块我建议在这个博客中使用AspectJ。所以我写了一些代码。是否有任何我需要做的事情,如配置细节。我在任何配置中添加了 AspectJ 所需的jar文件 JSF支持AspectJ ?我的代码是:

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class AopInterceptor implements MethodInterceptor{

public AopInterceptor() {
}

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

@Around("profile()")
public Object invoke(MethodInvocation mi) throws Throwable {
    System.out.println("test start");
    Object obj=mi.proceed();
    System.out.println("test end");
    return obj;
 }
}

1 个答案:

答案 0 :(得分:0)

我在WAR build.xml文件中创建了一个目标,并添加了AspectJ jar文件。现在我得到了所有被调用的方法。这是目标代码:

 <taskdef  classpath="C:/Users/s.kosna/Downloads/aspectj-1.6.11/lib/aspectjtools.jar"
 resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties"/>
<target name="aspectj">
<echo level="info">--- aspectj (start) ---</echo>
<condition property="targetos" value="windows" else="unix">
    <os family="windows"/>
</condition>
<pathconvert targetos="${targetos}" property="javac.convertedClasspath" >
    <path path="${javac.classpath}" />
</pathconvert>
<iajc source="1.6" target="1.6" showweaveinfo="true" verbose="true" destdir="${build.classes.dir}"  >
    <inpath>
        <pathelement location="${build.classes.dir}"/>
    </inpath>
    <classpath>
        <pathelement location="${javac.convertedClasspath}" />
    </classpath>
</iajc>
<echo level="info">LORDDOSKIAS BRUTAL TEST ---</echo>
</target>

<target name="-post-compile" depends="aspectj"></target>

将上面的代码放在一个包中,并在war war build.xml中添加上面的ant脚本,以便它可以工作