1
我想知道是否有可能攔截所有來電說javax.persistence.EntityManager.flush(),橫跨同一個JVM運行(如Glassfish的所有應用程序域)。AOP攔截器攔截所有的應用程序在同一個JVM
繼不幫助還;-(
@Aspect
public class TraceAspect {
@Pointcut("within(@(@javax.persistence.PersistenceContext *) *)")
public void entityManagers() {
}
@Pointcut("execution(@javax.persistence.EntityManager *.merge) && args(object)")
public void merge(Object o) {
}
@Pointcut("execution(@javax.persistence.EntityManager *.createQuery) && args(string)")
public void createQuery(String s) {
}
@AfterReturning("entityManagers() && merge(object)")
public void afterMerge(JoinPoint joinPoint) {
System.out.println(joinPoint);
}
@AfterReturning("entityManagers() && createQuery(string)")
public void afterCreateQuery(JoinPoint joinPoint) {
System.out.println(joinPoint);
}
}
我相信你會需要一個加載時編織方式(http://www.eclipse.org/aspectj/doc/next/devguide/ltw.html)比你的方面將被執行的所有類是在加載時間wowen - 無論你有沒有他們的來源 –
我知道這一個是舊的,但仍列爲未答覆。如果看起來合適,請您接受並提出我的答案嗎?謝謝。 – kriegaex