Реализован АОП с использованием AspectJ без Spring. Он отлично работает при работе в Eclipse (сервер Tomcat), но не при запуске непосредственно в Tomcat. Добавили необходимые зависимости в pom, но бесполезно. Не получается разобраться в вопросе.
Класс аспекта:
@Aspect
public class FeatureAOP {
private static final Logger LOG = LoggerFactory.getLogger(FeatureAOP.class);
@Pointcut("execution(* x.y.z.rest.ModifiersFacadeWrapper.*(..)) && !execution(* x.y.z.rest.ModifiersFacadeWrapper.getUriInfo(..))")
protected void pointCut() {
}
@Before("x.y.z.rest.aop.FeatureAOP.pointCut() && this(mf) ")
public void parseParams(JoinPoint jp, ModifiersFacadeWrapper mf) {
LOG.info("Entered JoinPoint: {}", jp.getSignature());
String feature = mf.getUriInfo().getPathParameters().get("feature").get(0);
Feature featureEnum = Feature.get(feature);
mf.setFeature(featureEnum);
LOG.info("Feature set: {}", mf.getFeature());
}
}
aop.xml:
<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
<weaver options="-verbose -showWeaveInfo -Xset:weaveJavaxPackages=true -debug">
<include within="x.y.z"/>
</weaver>
<aspects>
<aspect id="featureAspect" class="x.y.z.rest.aop.FeatureAOP" ></aspect>
</aspects>
</aspectj>
Прочтите в нескольких сообщениях, чтобы установить javaagent в Tomcat для библиотеки aspectjweaver. Это тоже не помогло.
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/home/sumit/Downloads/apache-tomcat-8.0.17/webapps/dpi-manager/WEB-INF/lib/aspectjweaver-1.8.5.jar"