2013-09-13 3 views
1

мы разрабатываем приложение портала с использованием портлета JSR-286 внутри liferay tomcat. Мы создаем наш портлет, расширяющий общий портлет. Теперь я хочу применять журналы для doView() и doModify(), используя AspectJ. Я пробовал с Spring AspectJ. Но Spring AspectJ работает только с весенними управляемыми бобами.Как настроить AspectJ с JSR 286 Generic Portlet ??? любая ссылка

любая удача

ответ

1

Я решил выше проблема.

вот какое решение для этого.

Создать Аспект

  @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"); 

    } 

     } 

некоторые * .jar файлы AspectJ двоичные файлы:

aspectjrt.jar - необходимо во время выполнения для правильной обработки аспектов;

aspectjtools.jar - содержит реализацию компилятора aspectj;

aspectjweaver.jar - мост между аспектной логикой и инструментами Java;

1. В среде командной строки (с Ant-build.xml)

**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> 

образом 2: после компиляции ткачество

<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> 

способ 3: время загрузки ткачество

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

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

2.In Ecilpse (среда IDE)

 select your project,than select configure->convert to AspectJ Project. 
Смежные вопросы