2012-09-18 15 views
5

मेरे पास जावा ईई वेब एप्लिकेशन के लिए कुछ परिनियोजन मॉडल प्रश्न है। वर्तमान में हम अपने वेब एप्लिकेशन को टोमकैट 6 में एक WAR फ़ाइल के रूप में तैनात कर रहे हैं। सभी सामग्री को WAR फ़ाइल के साथ पैक किया गया है जिसमें स्थिर सामग्री जैसे छवियां, स्थिर HTML पृष्ठ आदि शामिल हैं। लेकिन मैं इन स्थिर सामग्री को HTTP सर्वर में तैनात करना चाहता हूं और गतिशील सामग्री को पुनर्प्राप्त करने के लिए केवल एप्लिकेशन सर्वर का उपयोग करना चाहता हूं। मैं इन चीजों को कैसे विभाजित करूं? क्या किसी ने इस तरह की कोई चीज की है और मेरे परिदृश्य के लिए एक अच्छा तैनाती मॉडल है। मदद की सराहना की जाएगी।जावा वेब एप्लिकेशन में http सर्वर और एप्लिकेशन सर्वर दोनों का उपयोग कैसे करें

क्या 2 WAR फ़ाइलों को केवल स्थिर सामग्री के साथ बनाना और HTTP सर्वर में WAR को तैनात करना और बाकी को एक अलग WAR फ़ाइल के रूप में तैनात करना और एप्लिकेशन सर्वर में इसे तैनात करना अच्छा विचार है? लेकिन इस दृष्टिकोण से उन सभी पृष्ठों पर असर पड़ेगा जहां स्थिर सामग्री वर्तमान में संदर्भित है और कोड परिवर्तनों की आवश्यकता है जो बहुत ही बोझिल हैं क्योंकि हमारी परियोजना विशाल है और कोड आधारित बहुत बड़ा है।

कोई भी रणनीति और विचार स्वागत है।

+0

आप स्थिर और गतिशील सामग्री को विभाजित क्यों करना चाहते हैं? क्या यह एक संगठनात्मक विचार है या क्या आप प्रदर्शन में सुधार करना चाहते हैं? –

+0

टिप्पणियों के लिए धन्यवाद और मैं प्रत्येक की टिप्पणियों की सराहना करता हूं। मेरे लिए अच्छा सीखने वक्र। मैं अपने वेब एप्लिकेशन के प्रदर्शन में सुधार के लिए HTTP सर्वर और एप्लिकेशन सर्वर दोनों का उपयोग करना चाहता हूं। मैं थोड़ी देर के लिए "जावा ™ वेब साइट्स के लिए प्रदर्शन विश्लेषण" नामक पुस्तक पढ़ रहा हूं। और यह मुझे मेरी सर्वर पर HTTP सर्वर और गतिशील सामग्री में स्थिर सामग्री डालने की सिफारिश कर रहा है। लेकिन मुझे व्यावहारिक रूप से ऐसा करने के बारे में पता नहीं है। मुझे पता है कि एक डब्ल्यूएआर फ़ाइल कैसे बनाएं और टॉमकैट में तैनात करें, जो एक ऐप सर्वर है जिसे हम अपनी तैनाती के लिए उपयोग कर रहे हैं। –

+0

तो मेरा प्रश्न नीचे के रूप में संशोधित किया जा सकता है। मैं अपनी स्थिर सामग्री को HTTP सर्वर में कैसे तैनात करूं? अगर मुझे इस पर कुछ मदद मिलती है तो मैं आगे बढ़ सकता हूं और अपनी सभी स्थिर सामग्री को WAR फ़ाइल से हटा सकता हूं और इसे HTTP सर्वर और अनुप्रयोग सर्वर में WAR के अंदर की बाकी फ़ाइलों में तैनात कर सकता हूं। –

उत्तर

1

प्रदर्शन कारणों से यह कुछ दिलचस्प हो सकता है।

ऐसा करने के लिए आपके पास अलग-अलग तैनाती स्क्रिप्ट/तैनाती फाइलें होनी चाहिए। एक प्रोजेक्ट के लिए तैनात करने के लिए एकाधिक फ़ाइल/WAR/फ़ोल्डर/स्क्रिप्ट होने पर कोई समस्या नहीं है। हमारे पास वही बात है जब आपको अपना युद्ध तैनात करना होगा और अपना डेटाबेस अपडेट करना होगा।

मेरे पास एक वैर फ़ाइल और आपके स्थैतिक सामग्री के साथ एक फ़ोल्डर होगा जो तैनात करने के लिए होगा।


संपादित

एक HTTP सर्वर में स्थिर सामग्री नियोजित करना सर्वर पर निर्भर करता है। यदि आप किसी लिनक्स सर्वर पर Apache का उपयोग करना चाहते हैं, तो आपको Virtual Host सेट अप करना होगा।

<VirtualHost *:80> 
    # This first-listed virtual host is also the default for *:80 
    ServerName www.example.com 
    DocumentRoot /www/domain 
</VirtualHost> 

इस उदाहरण में, आप एक आभासी मेजबान कि 80 बंदरगाह पर सुनता है, किसी भी आईपी पते के लिए और सर्वर नाम www.example.com के लिए की है। फिर इसे /www/domain पथ पर रीडायरेक्ट किया जाता है।

आपको दस्तावेज़ में अधिक उदाहरण और कॉन्फ़िगरेशन विकल्प मिलेंगे।

+0

मैं अपनी स्थिर सामग्री को HTTP सर्वर में कैसे तैनात करूं? अगर मुझे इस पर कुछ मदद मिलती है तो मैं आगे बढ़ सकता हूं और अपनी सभी स्थिर सामग्री को WAR फ़ाइल से हटा सकता हूं और इसे HTTP सर्वर और अनुप्रयोग सर्वर में WAR के अंदर की बाकी फ़ाइलों में तैनात कर सकता हूं। –

0

आप WAR फ़ाइल को HTTP सर्वर पर तैनात नहीं कर सकते हैं। WAR का उपयोग Java वेब अनुप्रयोगों के लिए किया जाता है, इसे एप्लिकेशन सर्वर या सर्वलेट कंटेनर में तैनात किया जाना चाहिए (जैसे Tomcat)। मुझे नहीं लगता कि स्थिर सामग्री को एक अलग वेब एप्लिकेशन में अलग करना एक अच्छा विचार है। यह एक परियोजना है, तो यह एक वेब अनुप्रयोग, के अलावा होना चाहिए:

एक युद्ध फ़ाइल एक विशेष फ़ोल्डर संरचना है और JSP पृष्ठों, जावा सर्वलेट, जावा वर्गों, HTML पृष्ठों आदि के अलावा विशेष फ़ाइलों शामिल जो संयुक्त रूप से एक वेब अनुप्रयोग बनाता है।

आप अपने एक आवेदन में अपनी स्थिर सामग्री को पकड़ सकते हैं और इसके बारे में वास्तव में कुछ भी बुरा नहीं है।

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

+0

मैं आपके इनपुट की सराहना करता हूं ... लेकिन मेरी आवश्यकता है कि मेरे वेब एप्लिकेशन के प्रदर्शन को बेहतर बनाने के लिए मेरी स्थिर सामग्री को HTTP सर्वर में तैनात किया जाए। मुझे यकीन नहीं है कि HTTP सर्वर में स्थैतिक सामग्री को कैसे बंडल और तैनात किया जाए और इसे एक WAR फ़ाइल के अंदर जेएसपी से एक्सेस करें जो कि टॉमकैट कंटेनर पर तैनात है। इस पर कोई मदद महान होगी ... –

0

संस्करण 4 तक, टॉमकैट स्थिर सामग्री की सेवा में काफी धीमा रहा है। यही कारण है कि अक्सर स्थिर सामग्री से गतिशीलता को विभाजित करने और नियमित वेब सर्वर का उपयोग करके बाद में सेवा करने की अनुशंसा की जाती थी (जिस पुस्तक का आपने उल्लेख किया था 2002 में जारी किया गया था ...)। हाल ही में टोमकैट संस्करणों को इस समस्या का सामना नहीं करना पड़ता है, इस प्रकार आप आईएमएचओ विभाजन से बचना कर सकते हैं, जो संगठन और सुरक्षा दोनों के लिए एक दुःस्वप्न हो सकता है।

स्थिर संसाधनों के लिए, आप उचित कैशिंग को कॉन्फ़िगर करने पर ध्यान केंद्रित कर सकते हैं, इसलिए उन्हें आवश्यकतानुसार अधिक बार स्थानांतरित नहीं किया जाएगा।

+0

हाँ कैशिंग एक और क्षेत्र है जिसे मैं भी देखना चाहता था। असल में हम पहले से ही इस्तेमाल किए गए मास्टर टेबल से संबंधित प्रश्नों और उनके लिए कुछ कैशिंग दृष्टिकोणों की तलाश शुरू कर चुके हैं। एक दृष्टिकोण वेब अनुप्रयोगों के दौरान इन प्रश्नों के परिणामों को लोड करने के लिए समय शुरू करना है और इसका उपयोग करना है। मास्टर टेबल डेटा बदलते समय इन-मेमोरी स्टफ को रीफ्रेश करना एक मुद्दा है ... लेकिन इस कैशिंग मुद्दे को अलग से देखेंगे ... बस यह साझा करना चाहता था कि हम उस पहलू को भी देख रहे हैं ... –

+0

डीबी से डेटा कैशिंग एक अलग मुद्दा है - मेरा मतलब वेब सर्वर में स्थिर संसाधनों के लिए कैश हेडर सेट करना था, इसलिए ब्राउज़र केवल उन्हें एक बार लाएगा। –

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