2011-12-03 5 views
7

एक टोमकैट वेबप्लिकेशंस के लिए पैक किए गए युद्ध में वेब-आईएनएफ/कक्षाएं और वेब-आईएनएफ/lib/*। Jarवेबपैथ प्राथमिकता में वेब-आईएनएफ/कक्षाएं/बनाम वेब-आईएनएफ/lib/*। जार?

उनमें से कौन सा क्लासस्पैट में प्राथमिकता है?

कारण मैं पूछ रहा हूं कि मेरा एप्लिकेशन एजर का उपयोग करता है, जिसमें एक पहलू परियोजना से उत्पन्न पहलुओं का उपयोग होता है; और बीजर, जिन्हें एजर से पहलुओं के साथ बुनाया जाना है। जब प्रोजेक्ट माईप संकलित किया गया है, तो यह कई वर्ग उत्पन्न करता है जो बीजेर से उन वर्गों को ओवरराइड करते हैं, इन्हें वेब-आईएनएफ/कक्षा डीआईआर में पैक किया जाता है। इसलिए यदि टोमकैट पहले वेब-आईएनएफ/lib/*। jar लोड करता है, तो बुने हुए पहलू प्रभावी नहीं होंगे

+1

इसी http://stackoverflow.com/q/5474765/435605 को –

उत्तर

11

जब वेब एप्लिकेशन के वेबएपएक्स क्लास लोडर से कक्षा लोड करने का अनुरोध संसाधित हो जाता है, तो यह क्लास लोडर स्थानीय रिपॉजिटरीज़ को पहले देखे जाने से पहले स्थानीय रिपॉजिटरीज़ में देखेगा। अपवाद हैं। कक्षाएं जो जेआरई बेस कक्षाओं का हिस्सा हैं, अतिव्यापी नहीं हो सकती हैं। कुछ वर्गों के लिए (जैसे जे 2 एसई 1.4+ में एक्सएमएल पार्सर घटक), जे 2 एसई 1.4 अनुमोदित फीचर का उपयोग किया जा सकता है (उपरोक्त सामान्य क्लासलोडर परिभाषा देखें)। आखिरकार, सर्वलेट एपीआई कक्षाओं वाले किसी भी जेएआर को क्लासलोडर द्वारा अनदेखा कर दिया जाएगा। टॉमकैट 5 में अन्य सभी क्लास लोडर सामान्य प्रतिनिधिमंडल पैटर्न का पालन करते हैं।

इसलिए, एक वेब अनुप्रयोग के नजरिए से, वर्ग या संसाधन लोड हो रहा है निम्नलिखित खजाने में, लगता है इस क्रम में:

Bootstrap classes of your JVM 
System class loader classes (described above) 
/WEB-INF/classes of your web application 
/WEB-INF/lib/*.jar of your web application 
$CATALINA_HOME/common/classes 
$CATALINA_HOME/common/endorsed/*.jar 
$CATALINA_HOME/common/i18n/*.jar 
$CATALINA_HOME/common/lib/*.jar 
$CATALINA_BASE/shared/classes 
$CATALINA_BASE/shared/lib/*.jar 

तो वेब-INF/कक्षाएं वेब-INF/lib से पहले पहले की खोज कर रहा है

रेफरी: http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html

2

यदि आप वेब-आईएनएफ/कक्षाओं में कक्षाएं डालते हैं, तो उन्हें वेब-आईएनएफ/lib। मैंने कभी-कभी डीबगिंग उद्देश्यों के लिए इसका इस्तेमाल किया है। here भी देखें।