1

我想在从命令行启动 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 的情况下完成这项工作。

4

1 回答 1

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

享受!:)

于 2016-02-02T14:03:51.600 回答