1

コマンドラインからTomcatサーバーを起動するときに、JVM引数を織り込んでAspectJの読み込み時間を渡したいです。次のようになります。

"%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

おそらく私の答えは遅すぎますが、他の人に役立つことを願っています. 少し前に、私は同じ問題に直面しました。2年経ちましたので、今は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 に答える