5

WEB-INF/lib/yay enstrüman-tomcat.jar birlikte META-INF/context.xml tanımlanan TomcatInstrumentableClassLoader ile Tomcat çalışması için nasıl ve sunucu tarafında Eclipselink 2.4 - Tomcat 7.0.27'de barındırılmaktadır. myWebApp/META-INF/context.xml ben o zaman Tomcat iyi myWebApp çalışır ben $TOMCAT_HOME/lib içine spring-instrument-tomcat.jar koyarsanızSpring Veri 3.1.0.RELEASE kullanan basit bir uygulama inşa ediyorum

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

Bahar classloader var ama $TOMCAT_HOME/webapps/mywebapp/WEB-INF/lib içine spring-instrument-tomcat.jar koyarsanız - Tomcat hariç ölür

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 Bağlam yükleyici parametresi false olarak ayarlanmış ya da yardımcı olmuyor.

Herhangi bir (özel) global lib'in Tomcat'e sahip olmak istemiyorum (ve gerçek hayattaki üretim sistemimizde global olana sahip olmak kolay olmayacak), böylece tüm gerekli olanı yerelleştirmeye çalışıyorum basit (henüz büyük) savaş dosyasında. Böyle bir kapsüllemenin nasıl gerçekleştirileceğine dair herhangi bir düşünce var mı?

cevap

5

Eh, Tomcat'in lib klasöründe ekstra kavanozları istemiyorsanız, tek seçenek (hala İlkbahar/AspectJ'yi LTW iş var) -javaagent eklemek için tomcat yayınlanma senaryoyu düzenlemektir :. ..instrument.jar, JAVA_OPTS veya CATALINA_OPTS ve context.xml dosyasını kaldırın (artık TomcatInstrumentableClassLoad‌ er gerekmez).

+0

Cevabınızı doğru olarak değerlendirmem gerekiyor, çünkü şimdiye kadar bulunan en iyi çözüm. Teşekkürler! –

0

context.xml ürününüz doğru olmayabilir. Bu deneyin:

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

Önerinizi ** useSystemClassLoaderAsParent ** ile denedim, ancak Tomcat 7'de 'UYARI: [SetPropertiesRule] {Bağlam/Yükleyici}' ÖzellikSystemClassLoaderAsParent 'özelliği' false 'ile eşleşen bir özellik bulamadı. beklenen, java.lang.ClassNotFoundException: org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader' sonraki hata oldu. –

+0

Ben de tomcat7 kullanıyorum, ama başarılı oldum.the-enstrümanı-tomcat.jar tomcat/lib içine koymalı. Doğru yeri koyduğunuzu düşünmüyorum. Ve diyelim ki, geliştirmek için intellij fikrini kullanıyorum tomcat7utf8 \ conf \ Catalina \ localhost \ yourwebappnameDirectory \ içindeki context.xml ve burada tamamen şöyle: ' ' web uygulaması . – flym

+0

Tamam, eğer sizi doğru anladıysam, Tomcat/lib'e tomcat-instrumental.jar'ı koymanızı öneririz, fakat bu tam olarak benim yapmak istemediğim şeydir (ancak şu an için çalışmanın başka yollarım yok.) soru nasıl Tomcat/lib dokunulmamış ve kendi libs ile benim app tatmin olduğunu. –

İlgili konular