tomcat

2011-12-08 13 views
5

पर jamon.war का उपयोग करके मैं JAMon का उपयोग कर रहा हूं, और मैं अपने ऐप की निगरानी के लिए jamon.war का उपयोग करना चाहता हूं। हालांकि, मेरे ऐप और jamon.war ऐप में अलग-अलग क्लासलोडर हैं, और इसलिए वे एक दूसरे के स्थैतिक चर नहीं देखते हैं (जहां डेटा संग्रहीत किया जाता है, जहां तक ​​मैं समझता हूं)। जब मैं अपने ऐप में MonitorFactory.getReport() पर कॉल करता हूं तो मुझे उचित डेटा मिल रहा है।tomcat

यह काम कैसे प्राप्त करें?

उत्तर

4

समस्या यह थी कि मेरे पास WEB-INF/lib में जैमन-xx.jar था। जब मैं इसे हटा देता हूं (और इसे केवल टॉमकैट के lib dir में है), यह टोमकैट क्लासलोडर द्वारा लोड किया जाता है (जो मुझे लगता है कि सभी एप्लिकेशन क्लासलोडर्स का अभिभावक है), और इसलिए दो अनुप्रयोग स्थैतिक फ़ील्ड साझा कर सकते हैं।

+0

दाएं, यदि आप विभिन्न अनुप्रयोगों के बीच एक जार साझा करते हैं, तो आपको इसे tomcat/lib निर्देशिका के माध्यम से करना चाहिए। प्रत्येक वेबपैप वास्तव में अपने स्वयं के क्लासलोडर है, लेकिन आप उन्हें सामान्य क्लासलोडर के माध्यम से संचार में डाल सकते हैं। एक नज़र डालें [यहां] (http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html)। – javanna

+0

आप एह कैश साझा किए गए 'कैशमैनगर' (टॉमकैट में सभी WARs के लिए एक ही प्रबंधक) के साथ एक ही समस्या का निरीक्षण कर सकते हैं - यदि प्रत्येक एप्लिकेशन के साथ 'ehcache.jar' बंडल किया गया है, तो प्रत्येक व्यक्ति का अपना' कैशमेनगर 'होगा क्योंकि EhCache ' स्थिर 'फ़ील्ड प्रबंधक साझा करने के लिए ... एक बार' ehcache.jar' '/ lib' निर्देशिका में रखा गया है, दोनों एप्लिकेशन एक ही 'कैशमेनगर' और कैश साझा करते हैं। –

संबंधित मुद्दे