2010-11-11 18 views
8

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html पर बिल्ला 6.0 दस्तावेज़ का कहना है:बिलाव संदर्भ प्रबंधन

केवल एक संदर्भ फ़ाइल /META-INF/context.xml आवेदन फाइलों के अंदर में किसी एक फ़ाइल में $CATALINA_BASE/conf/[enginename]/[hostname]/ में आवेदन के लिए मौजूद नहीं है, तो। यदि वेब एप्लिकेशन को WAR के रूप में पैक किया गया है तो /META-INF/context.xml को $CATALINA_BASE/conf/[enginename]/[hostname]/ पर कॉपी किया जाएगा और इसका नाम बदलकर एप्लिकेशन के संदर्भ पथ से मेल किया जाएगा। एक बार यह फ़ाइल मौजूद होने पर, इसे प्रतिस्थापित नहीं किया जाएगा यदि नए /META-INF/context.xml के साथ एक नया WAR होस्ट के ऐपबेस में रखा गया है।

हालांकि मैंने देखा है कि अगर आप webapp निर्देशिका में नया युद्ध फ़ाइल में कहें, META-INF निर्देशिका में context.xml की जगह $CATALINA_BASE/conf/[enginename]/[hostname] में context.xml

क्या कोई विन्यास है जो सुनिश्चित करता है कि context.xml$CATALINA_BASE/conf/[enginename]/[hostname]/ में जब भी नई युद्ध फ़ाइल तैनात की जाती है तो ओवरराइट नहीं किया जाता है।

संपादित करें: मैं autodeploy = "true" JoseK की टिप्पणी से उपयोग कर रहा हूँ, मैं समझता हूँ जब बिल्ला नई युद्ध फ़ाइल को देखता है, यह पुरानी आवेदन (प्रसंग फ़ाइल का विलोपन के लिए अग्रणी) undeploys और नए युद्ध फ़ाइल तैनात (नई युद्ध फ़ाइल के निर्माण के लिए अग्रणी)। उस स्थिति में टोमकैट दस्तावेज़ से उपर्युक्त जानकारी अवशेष नहीं है। नया सवाल क्या कोई ऐसी स्थिति हो सकती है जहां उपर्युक्त चीज हो सकती है?

+0

आप टोमकैट पर कैसे तैनात कर रहे हैं? मैन्युअल रूप से या एक आईडीई (ग्रहण) प्लगइन का उपयोग कर? – BalusC

+0

मैन्युअल रूप से। मैं युद्ध फ़ाइल बनाता हूं और इसे वेबएप निर्देशिका में ले जाता हूं। – Hemang

+1

क्या आपके पास 'server.xml' में' होस्ट' तत्व पर 'autoDeploy' विशेषता सेट है? इसे गलत पर सेट करने का प्रयास करें। – matt

उत्तर

1

यदि आप 'context.xml' की ओवरराइटिंग से बचना चाहते हैं, तो आप टॉमकैट प्रबंधक यूआरएल पर जा सकते हैं और फिर पिछले ऐप को अनइंस्टॉल कर सकते हैं और नया युद्ध/कान इंस्टॉल कर सकते हैं। इस तरह आप स्थापना प्रक्रिया पर अधिक नियंत्रण है।

2

मैं मानता हूं कि दस्तावेज़ीकरण भ्रामक है। आम तौर पर, जब आप अपने आवेदन का एक नया संस्करण तैनात करते हैं, तब से इस व्यवहार का वास्तव में स्वागत किया जाता है, आप अपनी अद्यतन context.xml फ़ाइल को भी तैनात करना चाहते हैं। यदि आप अपने उत्पादन सर्वर पर मैन्युअल रूप से अपनी context.xml फ़ाइल को संपादित करने की योजना बना रहे हैं, तो मैं सुझाव देता हूं कि इसे पूरी तरह से छोड़ दें और इसकी सामग्री को conf/server.xml फ़ाइल में कॉपी करें।

आपकी समस्या के लिए एक त्वरित पैच/समाधान (यह स्वयं नहीं करेगा) इसे पहली बार तैनात और अद्यतन करने के बाद context.xml फ़ाइल को केवल पढ़ने के लिए चिह्नित करना है। इस तरह टोमकैट इसे हटा/अपडेट नहीं कर सकता है।

+1

क्यों टोमकैट? आप विरोधी पैटर्न क्यों गले लगाते हैं? इस समस्या को हल करने के लिए अपनी युद्ध फ़ाइल और एक अलग context.xml फ़ाइल को तैनात करने के लिए 'tomcat7-maven-plugin' देखें। http://stackoverflow.com/questions/4032773/why-does-tomcat-replace-context-xml-on-redeploy –

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