2011-12-08 24 views
5

JAMon kullanıyorum ve uygulamanızı izlemek için jamon.war kullanmak istiyorum. Ancak, uygulamam ve jamon.war uygulamasının farklı sınıf yükleyicileri var ve bu nedenle birbirlerinin statik değişkenlerini göremiyorlar (anladığım kadarıyla, verilerin saklandığı yer). Uygulamamda MonitorFactory.getReport() numaralı telefonu aradığımda doğru verileri alıyorum.tomcat üzerinde jamon.war kullanımı

Bu nasıl çalışır?

cevap

4

Sorunum, WEB-INF/lib numaralı telefonumda jamon-xx.jar dosyasıydı. Bunu kaldırdığımda (ve yalnızca tomcat'ın lib dizininde var), tomcat sınıf yükleyicisi tarafından yüklenir (ki bu da tüm uygulama sınıf yükleyicilerinin bir üst öğesidir) ve böylece iki uygulama statik alanları paylaşabilir.

+0

Doğru, farklı uygulamalar arasında bir kavanoz paylaşırsanız, bunu tomcat/lib dizininde yapmalısınız. Her webapp aslında kendi classloader var, ama onları Common classloader üzerinden iletişim kurabilirsiniz. Bir göz atın [here] (http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html). – javanna

+0

Aynı sorunu EhCache 'CacheManager' ile de (Tomcat'taki tüm WARS'ler için aynı yönetici) görebilirsiniz - her uygulamada“ ehcache.jar ”paketlenmişse, EhCache kullanıldıklarından her birinin kendi' CacheManager'ı olacaktır. statik 'alan yöneticisi paylaşmak için ...' ehcache.jar ''/ lib' dizinine yerleştirildikten sonra her iki uygulama da aynı' CacheManager'ı ve önbellekleri paylaşır. –