5

私はSpringデータ3.1.0.RELEASEを使用する単純なアプリケーションを構築しましたTomcat 7.0.27でホストされているサーバー側のEclipselink 2.4を使用しています。 Tomcatは例外でWEB-INF/lib/spring-instrument-tomcat.jarと共にMETA-INF/context.xmlに定義されたTomcatInstrumentableClassLoaderを使用してTomcatを動作させる方法

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 
を死ぬ - mywebapp/META-INF/context.xmlに、私は私が $TOMCAT_HOME/libspring-instrument-tomcat.jarを入れた場合、Tomcatがうまくmywebapp実行されますが、私は $TOMCAT_HOME/webapps/mywebapp/WEB-INF/libspring-instrument-tomcat.jarを置けば春のクラスローダ

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

を持っています

コンテキストローダーパラメータuseSystemClassLoaderAsParentfalseに設定しても役に立ちません。

私はTomcatに(カスタムの)グローバルlibを持ちたいと思っていません(そして、現実の実動システムにグローバルなものを持たせることは容易ではありません)ので、必要なものすべてをローカライズしようとしていますシンプルな(しかし大きな)戦争ファイルのもの。どのようにそのようなカプセル化を達成するための任意の考えですか?

答えて

5

:これを試してみてください..instrument.jarをJAVA_OPTSまたはCATALINA_OPTSにコピーし、context.xmlファイルを削除します(TomcatInstrumentableClassLoad erはもう必要ありません)。

+0

私は正しい答えとしてあなたの答えを扱わなければなりません。ありがとう! –

0

context.xmlが正しくない可能性があります。あなたがTomcatのlibフォルダ内の余分なjarファイルをしたくない場合は、唯一のオプションは(まだ春/ AspectJのLTWの仕事を持っている)-javaagentを追加するために、Tomcatの実行スクリプトを編集することである:.、まあ

<?xml version="1.0" encoding="UTF-8" ?> 
<Context> 
    <Loader 
    loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" 
    useSystemClassLoaderAsParent="false" /> 
</Context> 
+1

私はあなたの提案を** useSystemClassLoaderAsParent **で試みましたが、Tomcat 7では警告:[SetPropertiesRule] {Context/Loader}プロパティ 'useSystemClassLoaderAsParent'を 'false'に設定すると一致するプロパティが見つかりませんでした。 'java.lang.ClassNotFoundException:org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader'が次のエラーでした。 –

+0

私もtomcat7を使っていますが、私は成功しました。spring-instrument-tomcat.jarはtomcat/libに置くべきです。私はあなたが正しい場所を置くとは思わないでしょう。私は、intellijのアイデアを使って開発します ' <?xml version =" 1.0 "encoding =" UTF-8 "?> <コンテキストパス= <コンテキストパス> "" 文書ベース= "あなたのウェブアプリケーションのパス"> <ローダーloaderClass = "org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent = "ではないのTomcatの\ webappディレクトリ内 ' "/>偽のウェブアプリ。 – flym

+0

私が正しく理解していれば、tomcat-instrumental.jarをTomcat/libに置くことを提案しますが、これは私がやりたいことではありません(しかし、私は今のところ動作させる方法が他にありません。質問は、Tomcat/libをそのままにして、自分のアプリケーションをlibにする方法です。 –

関連する問題