2012-03-08 12 views
12

के लिए मेटा-आईएनएफ/context.xml में पथ निर्दिष्ट करने के लिए कैसे मैं टॉमकैट 7 का उपयोग कर रहा हूं और युद्ध फ़ाइल में एक युद्ध फ़ाइल के संदर्भ रूट को सेट करना चाहता हूं और टॉमकैट ऑटोोडोल्ड है और इस पथ को उठाएं। मैंने सोचा कि मुझे युद्ध की मेटा-आईएनएफ निर्देशिका में context.xml डालकर ऐसा करने का तरीका मिला है।टॉमकैट

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/somepath/myapp"/> 

लेकिन यह काम करने के लिए नहीं लगता है, मुझे लगता है कि जिसमें कहा गया है कि यह सब कुछ है, लेकिन पथ को लोड करता है http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/startup/SetContextPropertiesRule.html द्वारा लोड कर रहा है!

मुझे पता है कि मैं युद्ध कुछ नाम # myapp.war नाम कर सकता हूं और यह इसे उठाएगा लेकिन मैं वेबलॉगिक पर भी तैनात हूं जो इस तरह के नाम से खुश नहीं है।

क्या ऐसी कुछ सेटिंग है जिसका उपयोग मैं संदर्भ.xml से पथ कार्य करने के लिए कर सकता हूं? जब तक पथ में निर्दिष्ट किया जाता

धन्यवाद डेविड

उत्तर

12

प्रसंग path विशेषता नजरअंदाज कर दिया है एक हार्ड-कोडेड server.xml में Context, जो दृढ़ता से हतोत्साहित किया जाता है, और बहुस्तरीय पथ नहीं लेता है।

युद्ध फ़ाइल का नाम, या tomcat/conf/Catalina/hostname में संदर्भ xml फ़ाइल का नाम तैनात अनुप्रयोग के path बन जाता है।

आपके मामले में उपरोक्त दो के उत्तरार्द्ध समाधान है, बस सुनिश्चित करें कि आप होस्ट के लिए नामित appBase के बाहर .war फ़ाइल डाल, या आप दो बार एप्लिकेशन को तैनात करेंगे बनाते हैं।

में: conf/Catalina/localhost/myapp#path.xml

<?xml version="1.0"?> 
<Context docBase="/some/path/to/myapp.war"> 
</Context> 
+2

जिसने मेरे लिए भी यही समस्या हल की, धन्यवाद। हालांकि, मुझे विश्वास है कि पथ विशेषता को अनदेखा करने के लिए यह टोमकैट की खामियां है। दस्तावेज भी विपरीत कहता है। इससे भी बदतर, डॉकबेस को टॉमकैट 7.0.22 द्वारा अनदेखा किया जा रहा है, इसलिए एकमात्र तरीका इन बेवकूफ हैंड नामों को context.xml और .war दोनों के लिए उपयोग करना है। # श्वास ... – zakmck

+1

यह बेवकूफ नहीं है। आप स्पष्ट कारणों से फ़ाइल नाम में/(या शायद \) वर्ण का उपयोग नहीं कर सकते हैं। पथ विशेषता आईएमओ को हटा दी जानी चाहिए। यह लोगों को बहुत ज्यादा भ्रमित करता है। – Pidster

+2

मेरे पास हैश के खिलाफ कुछ भी नहीं है, मुझे लगता है कि यह बुरा है कि मुझे पैरामीटर पथ और डॉकबेस के बजाय फ़ाइल नाम के माध्यम से संदर्भ पथ निर्धारित करने के लिए मजबूर होना पड़ता है। उदाहरण के लिए, इस तरह अभ्यास में मैं myapp-v1.2.3beta.war नाम की किसी भी फ़ाइल को तैनात नहीं कर सकता। ठीक है, मैं एक उपनाम स्थापित कर सकता हूं, लेकिन दूसरा तरीका बेहतर होगा। – zakmck

0

आप एक निर्देशिका बिलाव के बारे में पता नहीं है करने के लिए अपने application.war लोड करते हैं, तो यह कैसे अपने युद्ध फ़ाइल में कुछ भी पढ़ सकते हैं? इस जानकारी को जोड़ने के लिए सही जगह $ TOMCAT_HOME/conf/context.xml में है - यह टोमकैट का हिस्सा है और टॉमकैट इस फ़ाइल को पढ़ सकता है और पता लगा सकता है कि आपका एप्लिकेशन कहां है और इसे तैनात किया गया है। नहीं है how to set up JNDI in Tomcat

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! आपका उत्तर पोस्ट करने के लिए धन्यवाद! कृपया सावधानीपूर्वक [स्व-संवर्धन पर अक्सर पूछे जाने वाले प्रश्न] (http://stackoverflow.com/faq#promotion) को पढ़ना सुनिश्चित करें। यह भी ध्यान रखें कि यह * आवश्यक * है कि जब भी आप अपनी साइट/उत्पाद से लिंक करते हैं तो आप एक अस्वीकरण पोस्ट करते हैं। –

1

के बारे में अधिक की तरह

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" copyXML="true"> 
+0

मैं उम्मीद कर रहा था कि यह काम करेगा, लेकिन यह अभी भी मूल्य को अनदेखा कर रहा है। यह टॉमकैट के पुराने संस्करणों में काम करता था, लेकिन टॉमकैट 7 में नहीं। –

1

/tomcat7/conf/server.xml में जोड़ने copyXML = "true" $ TOMCAT_HOME अंदर config होस्ट/conf/server.xml तत्व के अंदर लाइनों नीचे जोड़ सकते हैं और बदलाव करने के लिए टॉमकैट को पुनरारंभ करें।

* अपने एप्लिकेशन नाम पर "mycom" बदलें।

<Context path="" docBase="mycom"> 
    <!-- Default set of monitored resources --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
</Context> 
<Context path="ROOT" docBase="ROOT"> 
    <!-- Default set of monitored resources --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
</Context> 

यह डिफ़ॉल्ट रूट एप्लिकेशन संदर्भ रूट "/ रूट" के अंतर्गत दिखाई देगा।

अब आपका ऐप "/" और "/ mycom" पर भी पहुंच योग्य है!