2010-11-16 18 views
14

वेबस्पेयर माता-पिता के आखिरी और माता-पिता के साथ आता है। क्या यह जावा ईई अनुपालन है? क्या यह जावा ईई 5 अनुरूप सभी एप्लिकेशन सर्वर द्वारा समर्थित है?जावा ईई क्लास लोडिंग मानक

उत्तर

18

मैं अपने खुद के अनुसंधान (चश्मा और कुछ ब्लॉगों के माध्यम से जा) और नीचे किया कि मैं क्या समझ गए होंगे है

EAR

कल्पना परिभाषित या जनादेश कैसे वर्ग लोडर काम करना चाहिए नहीं करता है एक ईएआर के भीतर। हालांकि यह परिभाषित करता है कि

  1. वहाँ वर्गों के क्रम लोड करने के लिए प्रति धागा संदर्भ वर्ग लोडर होना चाहिए
  2. वर्गों को हल करने के लिए एक क्रमिक वर्ग लोड हो रहा है तंत्र हो सकता है (एप्लिकेशन सर्वर विक्रेताओं को लागू करने के जो भी तरह वे करने के लिए चुनते के लिए स्वतंत्र हैं)
  3. शीर्ष स्तरीय वर्ग लोडर (WAR/EAR) निम्न स्तर के वर्ग लोडर (जैसे बूटस्ट्रैप, एक्सटेंशन इत्यादि) को प्रतिनिधि दे सकता है। यह J2SE वर्ग लोडर प्रतिनिधिमंडल मॉडल के अनुपालन में है (PARENT_FIRST था में)

युद्ध

सर्वलेट विनिर्देश परिभाषित करता है और यानी युद्ध/वेब-INF/वर्गों और युद्ध एक PARENT_LAST का समर्थन (जनादेश/वेब-इंफ/lib ऐप सर्वर के साथ आने वाले पुस्तकालयों पर प्राथमिकता लेते हैं) कक्षा लोडिंग मॉडल। लेकिन यह सिर्फ युद्ध मॉड्यूल के लिए है। Servlet spec इस मामले में PARENT_FIRST के मानक जे 2 एसई प्रतिनिधिमंडल मॉडल से अलग हो जाता है।

संदर्भ

युक्ति: सर्वलेट 2.3, खंड: 9.7.2 वेब अनुप्रयोग classloader

युक्ति: जावा EE 5, खंड: EE.6.2.4.7 प्रसंग कक्षा लोडर

ऐप सर्वर विनिर्देश

दिलचस्प बात यह है कि, हालांकि, ऐसा लगता है कि अधिकांश प्रमुख ऐप सर्वर प्रतिनिधिमंडल को बंद करने के कुछ तंत्र का समर्थन करते हैं यदि आवश्यक हो तो (संघर्ष की वजह से या अन्यथा) अनुप्रयोग सर्वर से ई आवेदन: WebSphere - "अभिभावक पिछले", ग्लासफिश - <class-loader delegate="false">, JBoss - java2ParentDelegation=false, Geronimo - <java2-delgation-model>false</java2-delegation-model>

+1

अच्छा एक। ग्लासफ़िश में यह प्रतिनिधिमंडल को बंद करने के लिए 'sun-web.xml' में btw' 'है। यह भी देखें http://docs.sun.com/app/docs/doc/819-3659/beadf?l=en&a=view (चित्र) और http://docs.sun.com/app/docs/doc/821 -1752/beade? L = en & a = देखें – BalusC

0

अच्छी जानकारी। मैं एक ही प्रश्न का शोध कर रहा था और इसी तरह के निष्कर्ष पर आया था। एक प्रश्न अभी भी बनी हुई है, क्या यह माता-पिता अंतिम विकल्प के साथ जाने की सिफारिश की जाती है? मुझे लगता है कि यह तब होगा जब आपका आवेदन अधिक पोर्टेबल होगा; आप Appserver libs पर निर्भर नहीं हैं। आप आवेदन अलगाव प्राप्त करते हैं। मुझे नहीं लगता कि लोग एक तरफ या दूसरे की सिफारिश करते हैं। क्या आप ऐसी किसी भी सर्वोत्तम अभ्यास सिफारिशों में आए थे?

+0

"मुझे लगता है कि यह तब होगा जब आपका एप्लिकेशन अधिक पोर्टेबल होगा; आप एप्सर्वर libs पर निर्भर नहीं हैं। आप एप्लिकेशन अलगाव प्राप्त करते हैं।" ---- यह काम कर सकता है या नहीं क्योंकि स्पेक द्वारा कोई मानक अनिवार्य नहीं है। उदाहरण के लिए http://stackoverflow.com/questions/4097567/jboss-and-different-versions-of-hibernate –

+0

जेएसएफ 2 का उपयोग करने की कोशिश करने के साथ यहां 1 और परिदृश्य है।0 WAS 7 के साथ और ईएआर और युद्ध के लिए PARENT_LAST का उपयोग कर। अभी भी myfaces का उपयोग करने की कोशिश कर रहा था कि यह बंडल के साथ आता है। वह ईएल इम्प्लेट को उपयोग करने के लिए इसे हल करके इसे हल करने में सक्षम था लेकिन मुद्दा यह है कि आप सब कुछ काम करने की गारंटी नहीं दे सकते हैं भले ही आप प्रतिनिधिमंडल नीति स्विच करते हैं: http://stackoverflow.com/questions/3214373/websphere-7-jsf- 2-0 और classloaders –

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