如何在Tomcat中使用AspectJ加载时编织? (没有春天)

时间:2013-07-09 23:41:09

标签: tomcat aspectj load-time-weaving

我想在命令行启动tomcat服务器时传递AspectJ加载时编织JVM参数,如下所示:

"%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的情况下完成这项工作。

1 个答案:

答案 0 :(得分:0)

嗯,可能我的答案太晚了,但我希望它能帮助别人。前段时间我遇到了同样的问题。 两年过去了,所以我现在使用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

享受! :)