2009-06-30 17 views
6

के लिए सामान्य पुस्तकालयों का उपयोग कैसे करें मेरे पास चार अलग-अलग प्रोजेक्ट हैं, और मैं अपनी परियोजनाओं को तैनात करने के लिए वेबलॉगिक का उपयोग कर रहा हूं। कई पुस्तकालयों (जार फाइलें) हैं जो सभी परियोजनाओं के लिए आम हैं। वर्तमान में मेरे प्रत्येक प्रोजेक्ट में lib निर्देशिका है और पुस्तकालयों का लगभग एक ही सेट है। अब, क्या यह lib निर्देशिका WAR फ़ाइलों के बाहर है और उन्हें एक्सेस करना संभव है।एकाधिक जावा वेब प्रोजेक्ट

उत्तर

8

जार फ़ाइलों को अपने कंटेनर के "साझा" फ़ोल्डर में डालने की प्रलोभन का विरोध करें। जार फ़ाइलों को रखना बेहतर है जहां वे अब हैं। अब साझा फ़ोल्डर का उपयोग करना एक अच्छा विचार हो सकता है, लेकिन भविष्य में आपको एक ऐसे एप्लिकेशन को तैनात करने की आवश्यकता हो सकती है जिसके लिए साझा लाइब्रेरी की आवश्यकता हो, लेकिन एक अलग संस्करण।

कहा जा रहा है कि, मुझे वेबलॉगिक के साथ कोई अनुभव नहीं है। टॉमकैट में सभी तैनात अनुप्रयोगों के लिए पुस्तकालयों के साथ एक साझा फ़ोल्डर है। इसका उपयोग करना एक अच्छा विचार नहीं है। यदि वेबलॉगिक को अनुप्रयोगों के एक सेट के प्रति साझा फ़ोल्डर का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है (और सभी तैनात अनुप्रयोगों के लिए नहीं) तो आप इसके लिए जा सकते हैं।

+1

अच्छी सलाह! एक जार फ़ाइल की एक अतिरिक्त प्रतिलिपि बनाने में बहुत कम ओवरहेड है, जबकि, एक ही स्थान से एक सामान्य पुस्तकालय के दो संस्करणों को धुंधला करना या अपने सभी ऐप्स को एक ही पल में एक नए संस्करण में अपग्रेड करना एक असली दर्द है । –

+0

वास्तव में परियोजना आकार को संकलित करने के बाद लगभग 1.5 एमबी (libs के बिना), और 20 एमबी (libs के साथ) –

+0

परिनियोजन को तेज़ी से बनाने के लिए आप अपने विकास मशीन में साझा फ़ोल्डर का उपयोग कर सकते हैं। एक उत्पादन वातावरण में, इससे कोई फर्क नहीं पड़ता है, इसलिए अंदर सभी जारों के साथ एक बड़ी WAR फ़ाइल पसंद करें। यदि आप ऐसा करते हैं, तो आपको दो बार परीक्षण करना होगा (छोटे और बड़े युद्ध दोनों के लिए)। – kgiannakakis

0

सबसे पहले आप अपनी libs को एक ही स्थान पर रख सकते हैं और अपनी बिल्ड प्रक्रिया को आवश्यकतानुसार आयात कर सकते हैं।

नए वेबलॉगिक 10 को तैनात करने के लिए प्रत्येक डोमेन में एक lib फ़ोल्डर है जहां आप साझा libs डाल सकते हैं। मुझे नहीं लगता कि Weblogic 10

+1

संस्करण 9 में साझा लाइब्रेरी समर्थन साझा किया गया है: http://e-docs.bea.com/wls/docs92/programming/libraries.html – McDowell

-1

से पहले यह संभव है कि मैं वर्तमान में एक और दृष्टिकोण का उपयोग कर रहा हूं।

  1. केंद्रीय भंडार फ़ोल्डर बनाएं और वहां सभी सामान्य पुस्तकालयों को रखें।
  2. प्रत्येक प्रोजेक्ट में आप सभी आवश्यक पुस्तकालयों का संदर्भ बना सकते हैं। सबवर्सन में इसके साथ externals

हर काम करता है, स्थानीय काम कर प्रतिलिपि अद्यतन किया जाता है, बाहरी को अपडेट किया जाता है, तो आप सिर्फ केंद्रीय फ़ोल्डर के लिए प्रतिबद्ध करने की जरूरत है और यह अपने आप सभी परियोजनाओं को वितरित किया है।

3

क्या आप यह करना चाहते हैं? जब तक आप तैनाती की जगह के लिए अटक जाते हैं, तो मैं (शायद) इसके खिलाफ सलाह दूंगा।

क्यों? फिलहाल आपके पास इन libs से 4 समाधान चल रहे हैं। यदि आपको किसी एक libs को अपग्रेड करना है (कहें, यदि आप एक बग खोजते हैं, या यदि आपको एक नई सुविधा की आवश्यकता है), तो आपको सभी 4 समाधानों के लिए संगतता और कार्यक्षमता का परीक्षण करना होगा। यदि प्रत्येक समाधान के अपने स्वयं के libs का सेट होता है, तो वे sandboxed हैं और आप सभी 4 कदम में स्थानांतरित करने की जरूरत नहीं है।

ध्यान दें कि यह सब आपके समाधानों का परीक्षण करने के लिए कितना आसान है इस पर निर्भर करता है। आपको यह आसान लग सकता है, इस मामले में libs के एक ही सेट का उपयोग करना संभव है।

2

ऐसा मत करो।

WAR फ़ाइलों का पूरा विचार यह है कि वे स्वयं निहित इकाइयां हैं। इससे तैनाती बहुत आसान हो जाती है।

संभावित संस्करण संघर्षों के अतिरिक्त, जो दूसरों ने इंगित किया है, जार फ़ाइलों को/साझा करने में कक्षा दृश्यता के लिए बहुत घोंसला वाले परिणाम हो सकते हैं। वे एक अलग क्लासलोडर पर होंगे, और WAR फ़ाइल में कक्षाओं को देखने में असमर्थ होंगे। यदि आप पुस्तकालयों का उपयोग करते हैं जो क्लास.forनाम() पर काम करने के लिए भरोसा करते हैं (और बहुत सारे हैं), यह बहुत दर्दनाक हो सकता है।

यदि आप वास्तव में, ओएसजीआई या स्प्रिंग डीएम पर अतिरिक्त डिस्क स्थान और मेमोरी को वास्तव में बर्दाश्त नहीं कर सकते हैं।उन्होंने इस समस्या को हल किया है, लेकिन जटिलता की कीमत पर।

1

सभी साझा जार फ़ाइलों को वेबलॉगिक के सामान्य \ lib फ़ोल्डर के अंतर्गत रखें। सामान्य \ lib सभी तैनात ऐप्स द्वारा सुलभ है।

0

आप जार को अपनी कान फ़ाइल में डाल सकते हैं और साझा लाइब्रेरी के रूप में इसे तैनात कर सकते हैं।

आप युद्धों को कान में भी डाल सकते हैं और साझा जार एपीपी-आईएनएफ/lib में जोड़ सकते हैं। यह जे 2 ईई का वेबलॉगिक एक्सटेंशन है, इसलिए यह अन्य सर्वरों पर काम नहीं करेगा।

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