我想在命令行启动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的情况下完成这项工作。
答案 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
享受! :)