Liferay 如何使用JSR286通用Portlet配置AspectJ???任何链接

Liferay 如何使用JSR286通用Portlet配置AspectJ???任何链接,liferay,portlet,aspectj,jsr286,Liferay,Portlet,Aspectj,Jsr286,我们正在liferay tomcat中使用JSR-286 portlet开发门户应用程序。我们正在创建扩展通用portlet的portlet。现在我想使用AspectJ应用doView()和doModify()方法上的日志。我尝试了SpringAspectJ。但是SpringAspectJ只对Spring管理的bean起作用 幸运的话,我解决了上述问题 这里有一些解决方法 创建一个方面 一些*.jar文件是AspectJ二进制文件: aspectjrt.jar-运行时需要正确的方面处理 jar-

我们正在liferay tomcat中使用JSR-286 portlet开发门户应用程序。我们正在创建扩展通用portlet的portlet。现在我想使用AspectJ应用doView()和doModify()方法上的日志。我尝试了SpringAspectJ。但是SpringAspectJ只对Spring管理的bean起作用


幸运的话,我解决了上述问题

这里有一些解决方法

创建一个方面

一些*.jar文件是AspectJ二进制文件:

aspectjrt.jar-运行时需要正确的方面处理

jar-包含aspectj编译器的实现

jar—aspectj逻辑和java工具之间的桥梁

1.在命令行环境中(使用Ant build.xml)


我解决了上述问题

这里有一些解决方法

创建一个方面

一些*.jar文件是AspectJ二进制文件:

aspectjrt.jar-运行时需要正确的方面处理

jar-包含aspectj编译器的实现

jar—aspectj逻辑和java工具之间的桥梁

1.在命令行环境中(使用Ant build.xml)

           @Aspect
     public class TestAspect {

 TestAspect (){

    System.out.println("TestAspect Initialized");
}
@Pointcut( "execution(public void doView*(javax.portlet.RenderRequest,javax.portlet.RenderResponse) throws java.io.IOException, javax.portlet.PortletException)" )

 private void testDoView() {
    }
       @Around("testDoView()")
      public void logAround(ProceedingJoinPoint joinPoint)
      {

    System.out.println("AROUND ADVICE START");

try{
    joinPoint.proceed(joinPoint.getArgs());
        }catch(PortletException portletException){
    System.out.println("[AROUND ADVICE] :"+portletExceptionio.getMessgae());

}catch(IOException ioException){
    System.out.println("[AROUND ADVICE] :"+ioException.getMessgae());
}
catch(Throwable throwable){
    System.out.println("[AROUND ADVICE] :"+throwable.getMessage();
}

System.out.println("AROUND ADVICE EXIT");

    }

      }
 **There are three ways to inject instructions implied by AspectJ aspects:**


<project name="aspectj-example" xmlns:aspectj="antlib:org.aspectj">

<property name="src.dir" value="src/main/java"/>
<property name="resource.dir" value="src/main/resources"/>
<property name="target.dir" value="target"/>
<property name="classes.dir" value="${target.dir}/classes"/>
<taskdef uri="antlib:org.aspectj"
        resource="org/aspectj/antlib.xml"
        classpath="${resource.dir}/aspectjtools.jar"/>
 <path id="aspectj.libs">
    <fileset dir="${resource.dir}"/>
</path>
<target name="clean">
    <delete dir="${target.dir}"/>
    <mkdir dir="${target.dir}"/>
    <mkdir dir="${classes.dir}"/>
</target>

way 1: compile-time weaving

 <target name="compile-time" depends="clean">
    <aspectj:iajc source="1.5" srcdir="${src.dir}" classpathref="aspectj.libs" destDir="${classes.dir}"/>
    <java classname="com.aspectj.TestTarget" fork="true">
        <classpath>
            <path refid="aspectj.libs"/>
            <pathelement path="${classes.dir}"/>
        </classpath>
    </java>
</target>
<target name="post-compile" depends="clean">

    <echo message="Compiling..."/>
    <javac debug="true" srcdir="${src.dir}" classpathref="aspectj.libs" destdir="${classes.dir}"/>

    <echo message="Weaving..."/>
    <aspectj:iajc classpathref="aspectj.libs" inpath="${classes.dir}" aspectpath="${src.dir}" outJar="${classes.dir}/test.jar"/>


</target>
     <target name="load-time" depends="clean">

     <echo message="Compiling..."/>
     <javac debug="true" srcdir="${src.dir}" classpathref="aspectj.libs"               destdir="${classes.dir}"/>
     </target>
     </project>
      select your project,than select configure->convert to AspectJ Project.