繁体   English   中英

使用JSF1.2的AspectJ

[英]AspectJ with JSF1.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;
 }
}

我在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 build.xml中添加上面的ant脚本,这样就可以了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM