क्यों tomcat मेरे संदर्भ को हटाने की तरह है। xml फ़ाइल?


24

मैं काम पर एक वेब-आधारित जावा एप्लिकेशन विकसित कर रहा हूं और (जाहिर है) इसे विकास के दौरान स्थानीय रूप से चलाना होगा। मैंने टॉमकैट डॉक्स का पता लगा लिया है और एक उपयुक्त reference.xml फ़ाइल है, /etc/tomcat6/Catalina/localhost/लेकिन हर बार अक्सर, Tomcat इसे हटाने का फैसला करता है! जिसका मतलब है कि मुझे इसे वापस लाना होगा और टॉमकैट को फिर से शुरू करना होगा।

यह ऐसा क्यों करता है? मैंने इसके बारे में टॉमकैट डॉक्स खोजा है और कोई भी समझदार नहीं हूं।

(ओह हां: यह वास्तव में नहीं कहा जाता है context.xmlलेकिन owners.xmlइस आवेदन के लिए HTTP पथ उपसर्ग है।)

अद्यतन करें

मैंने अब देखा है कि Tomcat चल रहा था, जबकि Tomcat ने फ़ाइल को हटा दिया । मुझे लगता है कि मुझे बग दर्ज करने की आवश्यकता है ...


को यह समस्या है। ऐसा लगता है जैसे जब आप अपने युद्ध की जगह लेते हैं, तो यह ऐप की अयोग्यता का कारण बनता है जो संदर्भ फ़ाइल को हटाने का कारण बनता है। मैं चारों ओर काम एक नहीं है, लेकिन एक जो फिर से लोड करने से कहीं अधिक सुविधाजनक है = false करने के लिए प्यार होता stackoverflow.com/questions/4032773/...
artemb

जवाबों:


18

त्वरित सारांश : कई शर्तें हैं (जैसे युद्ध फ़ाइल को बदलना, वेबप को हटाना या नई सामग्री के साथ प्रतिस्थापित करना) जिसके तहत टॉमकैट संदर्भ फ़ाइल को हटाने सहित संदर्भ को खाली कर देगा।

विवरण : चाहे टॉमकैट करता हो या नहीं करता हो (मतलब अपने .xml डिस्क्रिप्टर के साथ-साथ वेबप निर्देशिका में परिवर्तन की जाँच करने के लिए) द्वारा संचालित है:

  1. server.xml $ CATALINA_HOME / conf / server.xml अनुभाग में स्थानीयकृत:

    <होस्ट का नाम = "लोकलहोस्ट" ऐपबेस = "वेबएप्स" अनपैकवेयर = "सत्य" ऑटोपेप्लॉय = "सच" xmlValidation = "झूठा" xmlNamespaceAware = "false">

  2. आप इस संपत्ति को अपने संदर्भ फ़ाइल में मान को ओवरलोड करके भी सेट कर सकते हैं

उन मामलों के लिए डॉक्टर को उद्धृत करना जब AutoDeploy = true आपकी संदर्भ फ़ाइल को हटाने का कारण हो सकता है:

  • WAR फ़ाइल हटाने से किसी भी संबंधित विस्तारित निर्देशिका, संदर्भ फ़ाइल और कार्य निर्देशिका को हटाने के साथ एप्लिकेशन का एक undeploy ट्रिगर हो जाएगा ।
  • निर्देशिका को हटाने से किसी भी संबंधित संदर्भ फ़ाइल और कार्य निर्देशिका को हटाने के साथ आवेदन का एक undeploy ट्रिगर होगा ।
  • WAR फ़ाइल को अपडेट करना किसी भी संबंधित विस्तारित निर्देशिका, संदर्भ फ़ाइल और कार्य निर्देशिका को हटाने के साथ एप्लिकेशन का एक undeploy ट्रिगर करेगा ।
  • एक निर्देशिका को अद्यतन करना (निर्देशिका सामग्री नहीं) किसी भी संबंधित संदर्भ फ़ाइल और कार्य निर्देशिका को हटाने के साथ आवेदन का एक undeploy ट्रिगर करेगा ।

व्यापक विवरण : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment


यह एक पूर्ण उत्तर नहीं है - serverfault.com/faq#deletion
जेनी डी का कहना है मोनिका

:) कृपया अपनी मदद करें (ऐसा लगता है कि सिंटैक्स हाइलाइटिंग
स्टैकओवरफ्लो की

बात यह है कि यदि आप केवल एक लिंक जोड़ते हैं, तो लिंक का लक्ष्य गायब हो सकता है, जिससे उत्तर बेकार हो जाएगा। इसीलिए serverfault.com आपको केवल लिंक के बजाय वास्तविक उत्तर पोस्ट करने के लिए प्रोत्साहित करता है। और जब मैंने टिप्पणी की, तो शेष पाठ दिखाई नहीं दिया। मैं अब भी वास्तव में लिंक के एक संक्षिप्त सारांश के बजाय अधिक पूर्ण प्रतिक्रिया पोस्ट करने की सलाह दूंगा।
जेनी डी का कहना है कि मोनिका

1
यह सच नहीं है। मूल उत्तर में निहित (और अभी भी करता है) लिंक के तहत आप जो कुछ भी पा सकते हैं उसका संक्षिप्त सारांश। लिंक के बिना जवाब अभी भी सही समझ में आता है और लिंक के साथ मिलकर आप विवरण पा सकते हैं।
Jan Zyka

लेकिन मैं आक्रामक होने की योजना नहीं बनाता था, अगर वह इस तरह से सॉरी लगता है :) मैं इस वेब में ज्यादा नहीं हूं, बस उसी को हल कर रहा था और साझा करना चाहता था।
Jan Zyka

5

यदि आप उदाहरण के लिए, उत्पादन वातावरण में ऑटोप्‍लॉय सुविधा नहीं चाहते हैं, तो आप कॉन्‍फ़ि‍ल्‍ट / कैटालिना / लोकलहोस्‍टल फ़ाइल में निम्‍न विशेषताओं पर विचार कर सकते हैं:

  • autoDeploy = "false"
  • और तैनाती = "गलत"

autoDeploy = "असत्य" अकेले काम नहीं कर सकता क्योंकि एप्लिकेशन संदर्भ .xml (META-INF में) autoDeploy की server.xml सेटिंग को ओवरराइड कर सकता है।

  • एप्लिकेशन का META-INF / reference.xml ऑटोवॉइल के साथ विकास के वातावरण में उपयोग किया जाएगा
  • AutoDeploy के बिना उत्पादन में का / कैटालिना / लोकलहोस्ट संदर्भ।

तैनाती एक्सएमएल विशेषता प्रलेखन विशेषता प्रलेखन पढ़ने के लायक है ( plement मानक कार्यान्वयन)।

थकाऊ ऑटोडेप्ल उपयोगकर्ता केस, और जब संदर्भ को हटा दिया जाता है: यानी आवेदन को अनदेखा कर दिया जाता है, तो उपयोगकर्ता का मामला प्रलेखित किया जा सकता है


2

खिचड़ी भाषा का जवाब क्यों

हालांकि, इस कड़ी में आप सेट करके ऐसा करना बंद कर सकते राज्यों autoDeploy="false"मेंserver.xml


1
टॉमकैट 7 ऑटोडेप्लो के तहत = "झूठा" से कोई फर्क नहीं पड़ता है :(
जोसेफ लस्ट

1

मैं ईमानदारी से नहीं जानता कि टॉमकैट के ऐसा करने के पीछे क्या तर्क है, लेकिन अपने संदर्भ तत्व में निम्नलिखित XML विशेषता जोड़ने का प्रयास करें

reloadable="false"

तो आपका संदर्भ कुछ इस तरह दिख सकता है:

<Context path="/" docBase="/some/path/name" reloadable="false">
<!-- Context related stuff -->
</Context>

यह फ़ाइल को हटाने से टॉमकैट को रखना चाहिए


दुर्भाग्य से, यह विकास को कठिन बनाता है क्योंकि मुझे प्रत्येक निर्माण के बाद टॉमकैट को फिर से शुरू करना होगा।
स्टेटिक्सन

चेकआउट jrebel विकास में इस काम में सहायता करने के लिए: zeroturnaround.com/jrebel
harmanjd

0

मुझे लगता है कि यह एक पुराना धागा है, लेकिन मुझे लगा कि इस समस्या को ठीक करने के लिए मुझे जो भी मिला उसे साझा करूंगा ...

मैं अपने संदर्भ के साथ ठीक वैसा ही मुद्दा रख रहा था। मेरे डेस्कटॉप संस्करण के लिए xcat फ़ाइल को हर बार क्लोबबर्ड किया जा रहा था कि मैं अपने आवेदन के लिए युद्ध फ़ाइल की एक नई प्रति तैनात करूंगा।

समस्या इस तथ्य के कारण थी कि मैं इस फाइल में सीधे फाइल सिस्टम पर बदलाव कर रहा था। मेरे ईक्लिप्स संपादक के माध्यम से Reference.xml फ़ाइल को संपादित करने के लिए समस्या क्या तय की गई थी। मेरे ग्रहण के अंदर, एक "सर्वर" परियोजना है जो एक बार जब आप इसे विस्तारित करते हैं, तो आप मुट्ठी भर फाइलें देख सकते हैं, जैसे कि संदर्भ। xml और server.xml। ऐसा प्रतीत होता है कि यदि आप फ़ाइलों को सिस्टम से बाहर जाने के बजाय यहाँ से संशोधित करते हैं, तो आपके परिवर्तन रखे जाते हैं।

मुझे निम्न धागे में यह समाधान मिला: https://www.liferay.com/community/forums/-/message_boards/message/16511799

मैं उम्मीद करता हूं कि इससे किसी की मदद होगी!

-StephenS


0

शीर्षक द्वारा वर्णित सामान्य समस्या को बिना किसी संदर्भ के हटाए गए युद्ध से पुनः तैनाती द्वारा कवर किया गया है जो इस समय अभी भी एक खुला मुद्दा है।

पुन: परिनियोजन के बीच एक स्वीकृत अंतर है जो संदर्भ को नहीं हटाता है, और अन-परिनियोजन के बाद परिनियोजित करता है जहां अन-परिनियोजन संदर्भ को हटा देता है। दस्तावेज़ पुराना हो गया था, और प्रबंधक GUI अभी भी पुन: परिनियोजन का समर्थन नहीं करता है।


-1

कभी-कभी यह सर्वर में ऐप के लिए अलग-अलग मूल्य होते हैं, उदाहरण के लिए अपलोड की गई फ़ाइलों को संग्रहीत करने का एक पथ। डेवलपर परिवेश में हमारे पास कुछ इस तरह है:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" reloadable="false">
     <Parameter name="rutaTrabajo" value="C:\Larry\Proyectos\app\rutaTrabajoxx" override="true"/>
</Context>

लेकिन सर्वर में पथ अलग है:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" >
     <Parameter name="rutaTrabajo" value="/usr/share/App/rutaTrabajo" override="true"/>
</Context>

मेरे पास भी यही समस्या है, टॉमकैट ने कॉन्फिडेंस को कम कर दिया है। कॉन्फ्लिक्ट / कैटलॉग / मिचेल से संदर्भ ।xml (meapp.xml)

हल करने के लिए मैं संदर्भ का उपयोग करता हूं। xml.default, उसी रास्ते में मैं एक फाइल बनाता हूं, जिसे reference.xml.default कहा जाता है और एक पुट कॉन्फिग के अंदर जिसे मैं आयोजित करना चाहता हूं:

 cat context.xml.default
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" >
     <Parameter name="rutaTrabajo" value="/usr/share/ParkiMeApp/rutaTrabajo" override="true"/>
</Context>

इसलिए, जब पुन: एप्‍लीकेशन करते हैं, तो एप, पुष्‍टि पैरामीटर अभी भी है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.