5

Tomcat 7.0.27 でホストされているサーバー側で Spring Data 3.1.0.RELEASE と Eclipselink 2.4 を使用する単純なアプリを作成しました。mywebapp/META-INF/context.xml に Spring クラスローダーがあります

<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>

入れた場合spring-instrument-tomcat.jar$TOMCAT_HOME/libTomcat は mywebapp を正常に実行しますが、入れた場合spring-instrument-tomcat.jar- $TOMCAT_HOME/webapps/mywebapp/WEB-INF/libTomcat は例外で 終了します

java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar

useSystemClassLoaderAsParentに設定されたコンテキストローダーパラメーターfalseも役に立ちません。

私はTomcatに(カスタム)グローバルライブラリを持ちたくありません(そして、実際のプロダクションシステムでグローバルライブラリを持つのは簡単ではありません)ので、必要なものすべてをシンプルにローカライズしようとしています(まだ大きい)戦争ファイル。そのようなカプセル化を達成する方法について何か考えはありますか?

4

2 に答える 2

5

Tomcat の lib フォルダーに余分な jar を入れたくない場合、(Spring / AspectJ LTW を引き続き動作させるための) 唯一のオプションは、Tomcat の実行スクリプトを編集して -javaagent:...instrument.jar をその JAVA_OPTS または CATALINA_OPTS に追加することです。 、context.xml ファイルを削除します (TomcatInstrumentableClassLoader はもう必要ありません)。

于 2013-01-08T23:10:07.850 に答える
0

May be your context.xml is not right. Try this:

<?xml version="1.0" encoding="UTF-8" ?>
<Context>
  <Loader
    loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"
    useSystemClassLoaderAsParent="false" />
</Context>
于 2012-08-19T03:02:05.357 に答える