Как использовать плетение времени загрузки AspectJ с Tomcat? (без весны)

Я хочу передать время загрузки AspectJ, переплетая аргументы JVM при запуске сервера tomcat из командной строки, примерно так:

"%JAVA_HOME%\bin\java"
  -ea %_DEBUG%
  -Duser.dir="%CATALINA_HOME%\bin"
  -DTEST_PLUGINS_HOME=%TEST_HOME%\plugins
  -DTEST_HOME="%TEST_HOME%"
  -DFrameworksLogFilePath=tomcat\logs\node_jsf.log
  -DTEST.useNonPooledUUMAuthenticator
  -DTEST_DOMAINS_FILE="%TEST_DOMAINS_FILE%"
  -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%"
  -Dcatalina.base="%CATALINA_BASE%"
  -Dcatalina.home="%CATALINA_HOME%"
  -Djava.io.tmpdir="%CATALINA_TMPDIR%"
  -Djava.util.logging.config.file=%CATALINA_HOME%\bin\isplogging.properties
  %TEST_JAVA_OPTS%
  -classpath "%CLASSPATH%"
  -Djava.system.class.loader=org.aspectj.weaver.loadtime.WeavingURLClassLoader
  -Daj.class.path="%TEST_HOME%\testsrc.jar"
  -Daj.aspect.path="C:\testAspect.jar;%TEST_HOME%\testsrc.jar"
  org.apache.catalina.startup.Bootstrap start

Переменная CLASSPATH указывает на файл aspectjweaver.jar.

я добавил аргументы

  • Djava.system.class.loader=org.aspectj.weaver.loadtime.WeavingURLClassLoader,
  • Daj.class.path=path-to-jar-file-where-the-aspects-should-be-woven и
  • Daj.aspect.path=path-of-jars-where-aspects-are-present (исходный файл jar также имеет некоторый скомпилированный аспект).

Но использование приведенной выше конфигурации не работает с Tomcat. Нужно ли вносить какие-либо другие изменения, связанные с путем к классам Tomcat или загрузчиком классов? Если да, пожалуйста, помогите.

Я пробовал то же самое без Tomcat, и он отлично работает. Пожалуйста помоги мне с этим. Я хочу сделать эту работу без использования Spring.


person Kanan Totawar    schedule 09.07.2013    source источник


Ответы (1)


Что ж, возможно, мой ответ запоздал, но я надеюсь, что он поможет другим. Некоторое время назад я столкнулся с той же проблемой. Прошло два года, поэтому сейчас я использую Tomcat 7 и AspectJ 1.8.8. Итак, во-первых, вам не нужно менять загрузчик системных классов. Начиная с Java 5 существует функция агента Java, поэтому AspectJ теперь использует ее для плетения времени загрузки. Для Tomcat просто добавьте это в свой %CATALINA_HOME%\setenv.bat:

set JAVA_OPTS=-javaagent:c:\path\to\aspectjweaver.jar
set CLASSPATH=%CLASSPATH%;c:\path\to\your\aspect

Наслаждаться! :)

person Andrew    schedule 02.02.2016