सर्वर को पुनः आरंभ किए बिना Tomcat में "server.xml" संपादित करें?


10

मैंने Tomcat 8 के confफ़ोल्डर में "server.xml" फ़ाइल को संपादित किया । मैंने Hostएक नई वेब साइट के लिए एक नया टैग जोड़ा ।

क्या मुझे टॉमकैट सर्वर को पुनरारंभ करना चाहिए?

क्या मैं टॉमसैट को पार्स करने और नए संपादित करने के लिए आवेदन कर सकता हूं server.xml?



@dawud लिंक के लिए धन्यवाद, लेकिन हम बात कर रहे हैं <Host>, नहीं <Context>
बेसिल बोर्के

2
भले ही, महत्वपूर्ण हिस्सा यह है कि server.xmlस्टार्टअप में एक बार पार्स किया जाता है। इसे पुनः आरंभ किए बिना पुनः लोड नहीं किया जा सकता है।
दाउद

@ दाऊद धन्यवाद मैं अब उस उल्लेख को देखता हूं। मैंने इसे एक उत्तर दिया है ताकि मैं इस प्रश्न को बंद कर सकूं।
बेसिल बोर्के

जवाबों:


14

मैं यह कहकर शुरू करूंगा कि प्रश्न पूरी तरह से सही तरीके से नहीं बनाया गया है, क्योंकि टॉमकैट को पुनरारंभ किए बिना फ़ाइल को वास्तव में संपादित करना काफी संभव है, लेकिन परिवर्तन को चल रही प्रक्रिया द्वारा अनदेखा किया जाता है।

असली सवाल यह होगा कि server.xmlटॉमकैट को फिर से शुरू किए बिना परिवर्तनों को कैसे लागू किया जाए ।

टॉमकैट के ऑनलाइन प्रलेखन पर स्टार्टअप प्रक्रिया और वर्ग-लोडर पृष्ठों से जानकारी इकट्ठा करना , इसे और अधिक विस्तार से समझना संभव है।

विशेष रूप से, यह serverStartup.txt में वर्णित है और स्टार्टअप प्रक्रिया के यूएमएल आरेख और संबंधित भागों को संक्षेप में निम्नानुसार किया जा सकता है:

Sequence 1. Start from Command Line
  ...
Sequence 2. Process command line argument (start, startd, stop, stopd)
Class: org.apache.catalina.startup.Bootstrap (assume command->start)
What it does:
a) Catalina.setAwait(true);
b) Catalina.load()
    b3) createStartDigester()
        Configures a digester for the main server.xml elements
    b4) Load the server.xml and parse it using the digester
        Parsing the server.xml using the digester is an automatic
        XML-object mapping tool, that will create the objects defined
        in server.xml
        Startup of the actual container has not started yet.
    b6) Calls initialize on all components, this makes each object
        register itself with the JMX agent.

यह सर्वलेट इंजन (कैटालिना) के बूटस्ट्रैप क्लास लोडर के निर्माण के बाद होता है।

इस जानकारी के साथ, यह अब स्पष्ट है जब स्टार्टअप प्रक्रिया में server.xmlफ़ाइल पार्स की जाती है, लेकिन यह वास्तव में इस सवाल का जवाब नहीं देता है कि इस फ़ाइल में परिवर्तन लागू करने के लिए टॉमकैट को पुनरारंभ करने की आवश्यकता क्यों है।

इसका उत्तर यह है कि इसके कुछ भाग को JMX के उपयोग से गतिशील रूप से संशोधित किया जा सकता है । यह संभव होने के लिए, उपयुक्त एमबीएन को पंजीकृत होना चाहिए (बी 6 कदम ऊपर), और एसईटी संचालन को भी स्वीकार करना होगा (कुछ एमबीआईएन में केवल जीईटी इंटरफ़ेस है)।

आपके विशिष्ट मामले में, रनटाइम के दौरान एक नया होस्ट बनाने और पंजीकृत करने का कोई तरीका नहीं है क्योंकि इसके लिए कोई प्रावधान नहीं है, और यही कारण है कि आपको बूटस्ट्रैप क्लास लोडर को उस ऑब्जेक्ट को तुरंत रजिस्टर करने के लिए टॉमकैट प्रक्रिया को पुनरारंभ करना होगा और इसके साथ रजिस्टर करना होगा। जेएमएक्स एजेंट।

बाद में, जेएमएक्स क्लाइंट से उस होस्ट को संशोधित करना संभव है जैसे jconsoleकि किसी भी जेडीके के साथ बंडल में आता है।

आपको jconsoleएक JMX सक्षम टॉम्कट से कनेक्ट करें और सभी उपलब्ध विशेषताओं की जांच करने के लिए होस्ट MBean ब्राउज़ करें:

होस्ट MBean की विशेषताएँ दिखा रहा है

और सभी उपलब्ध संचालन (उदाहरण के रूप में नीचे दिखाया गया है उनमें से एक) की जाँच करें:

होस्ट MBean पर एक उदाहरण ऑपरेशन दिखा रहा है


1
JMX के लिए मुझे शुरू करने के लिए +1।
राजा अन्बझगन

7

आवश्यक नहीं।

<Context>उल्लेख के लिए टॉमकैट डॉक्टर पृष्ठ :

... मुख्य conf / server.xml फ़ाइल को टोमाटेक को पुनः आरंभ किए बिना पुनः लोड नहीं किया जा सकता है।


1
उन upvotes को @dawud पर जाना चाहिए ... कोई और टिप्पणी नहीं। किसी के लिए खराब उत्तर जिसने कहा we’re talking about <Host>, not <Context>.-1 क्षमा करें, यह दुर्लभ है मैं ऐसा करता हूं, लेकिन मुझे वहां ...
krisFR

@krisFR दाऊद किसी भी समय, तब या अब उत्तर लिखने के लिए स्वतंत्र था। हर कोई अप-वोट के लिए यह खेल नहीं खेलता है।
तुलसी बॉर्क

1
@krisFR, बेसिल बॉर्क I ने इसे और अधिक सामान्य तरीके से कवर करने के लिए अधिक विस्तृत उत्तर जोड़ा है। आशा है कि यह उपयोगी है।
dawud
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.