同じ JVM (Glassfish ドメインなど)で実行されているすべてのアプリケーションで、javax.persistence.EntityManager.flush() と言うすべての呼び出しをインターセプトできるかどうか疑問に思っています。
以下はまだ役に立たない;-(
@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);
}
}