АОП (без Spring) не работает на Tomcat, но Eclipse

Реализован АОП с использованием 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"

person Sumit Srivastava    schedule 25.05.2015    source источник
comment
Здесь есть аналогичный вопрос: stackoverflow.com/questions/10032092/, и один из возможных ответов заключался в том, чтобы убедиться, что файл aop.xml находится в правильном месте. Если вы не получаете никаких выходных данных, связанных с ткачеством, это должно быть либо неправильно настроенным агентом, либо неправильным расположением aop.xml, а не чем-то конкретно неправильным с аспектами.   -  person Andy Clement    schedule 25.05.2015
comment
@AndyClement: расположение aop.xml было в порядке. Решение найдено. Мне пришлось добавить в maven плагин aspectj-maven.   -  person Sumit Srivastava    schedule 25.05.2015


Ответы (1)


Нашел решение этого с помощью maven. Нужно добавить плагин aspectj-maven-plugin в pom.xml.

< plugin >
  < groupId > org.codehaus.mojo < /groupId>
    <artifactId>aspectj-maven-plugin</artifactId >
    < version > 1.4 < /version>
    <configuration>
        <source>1.7</source >
        <target > 1.7 < /target>
    </configuration >
  <executions >
    <execution >
      <goals>
      <goal>compile</goal >
      < /goals>
    </execution >
  < /executions>
  <dependencies>
    <dependency>
        <groupId>org.aspectj</groupId >
        < artifactId > aspectjrt < /artifactId>
        <version>${aspectj.version}</version >
    < /dependency>
    <dependency>
      <groupId>org.aspectj</groupId >
      < artifactId > aspectjtools < /artifactId>
      <version>${aspectj.version}</version >
    < /dependency>
  </dependencies >
< /plugin>

Пример: https://github.com/mscharhag/blog-examples/blob/master/exception-translation/pom.xml

person Sumit Srivastava    schedule 25.05.2015