#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, и установите его на уровень отладки или даже трассировки, чтобы получить хотя бы подсказку, с чего начать проверку и получить первопричину.