Как активировать @Aspect в AEM?

#java #osgi #aspectj #aem

#java #osgi #aspectj #aem

Вопрос:

Я работаю с кодом Java в AEM.

Мы используем maven и вpom.xml существуют ли все необходимые зависимости и aspectj-maven-plugin

Я подготовил aspect с помощью pointcut:

 package org.xxx.aop.aspects;

import javax.jcr.Node;
import org.apache.sling.api.SlingHttpServletRequest;
import org.aspectj.lang.*;
import org.aspectj.lang.annotation.*;
import org.slf4j.*;

@Aspect
public class NodeAspect {

  private final Logger LOG = LoggerFactory.getLogger(NodeAspect.class);

  @Pointcut("execution(public * javax.jcr.Node.*(..)")
  public void jcrNodeAccess() {}

  @Around("jcrNodeAccess()")
  public Object jcrNodeMethodCall(ProceedingJoinPoint thisJoinPoint) throws Throwable {
    LOG.info("--- LOG NodeAspect ---");
    Object result = thisJoinPoint.proceed();
    // some code
    // ..

    return resu<
  }
  

Но когда я установил свой пакет в AEM, мой aspect не работает.

Может быть, мой аспект мне нужно будет активировать?

Может быть, эта проблема связана с поведением OSGI (felix) в AEM?

Пожалуйста, предоставьте мне идеи, как это исправить

Комментарии:

1. Aspectj-maven-plugin создает ваш код во время сборки. Возможно, это противоречит способу создания вашего пакета. Можете ли вы проверить, является ли код в jar переплетенным? Кроме того, я не уверен, можете ли вы повлиять на код, который не определен в вашем пакете. Вы, кажется, пытаетесь изменить поведение jcr. Узел, которого, я думаю, нет в вашем пакете.

2. Вы проверили файлы журнала?

3. @FlorianSalihovic, да. но файл журнала всегда пуст

4. Файлы журналов никогда не бывают пустыми! Тогда ваш экземпляр сломан.

5. Попробуйте создать пользовательский регистратор, который просматривает org.xxx.aop.aspects, и установите его на уровень отладки или даже трассировки, чтобы получить хотя бы подсказку, с чего начать проверку и получить первопричину.