2011-09-01 19 views
134

में किसी वेब एप्लिकेशन के संदर्भ पथ को कैसे सेट करें मुझे पता है कि मैं अपने वेबपैप (या इसकी WAR फ़ाइल) का नाम बदलकर रूट पर कर सकता हूं लेकिन यह ऐसा करने का एक भयानक तरीका है, IMHO। अब मैं बिल्ला डॉक & की जाँच की यह कहतेटॉमकैट 7.0

यह server.xml फ़ाइल में सीधे तत्वों जगह की सिफारिश नहीं है

तो मैं इसे एक और तरीका है कि यह सुझाव कर की कोशिश की।

व्यक्तिगत संदर्भ तत्वों को स्पष्ट रूप से परिभाषित किया जा सकता है: आवेदन फाइलों के अंदर /META-INF/context.xml में एक व्यक्ति फ़ाइल में।

तो मैं निम्नलिखित कोड के साथ एक /META-INF/context.xml, बनाया

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/"/> 

लेकिन तैनाती जब मैं सर्वर को पुनः आरंभ करने के बाद यह अभी भी "/" पर संदर्भ लोड करने में विफल, यह अभी भी यह "/<WEB_APP_NAME>" के साथ भरी हुई

कोई भी पॉइंटर्स सहायक है।

+0

मैं हमेशा के लिए बिलाव 8 [चेतावनी बग के बारे में निम्नलिखित बदलना होगा: एक संदर्भ पथ या तो खाली स्ट्रिंग या से प्रारंभ होना चाहिए एक '/'और'/'के साथ समाप्त नहीं होता है। पथ "/" इन मानदंडों को पूरा नहीं करता है और इसे बदल दिया गया है "(https://bz.apache.org/bugzilla/show_bug.cgi?id=58754) – gavenkoa

+1

कारण" तत्वों को रखने की अनुशंसा नहीं की जाती है सीधे डॉक्स में दिए गए सर्वर.एक्सएमएल फ़ाइल में अगली वाक्य में निम्नानुसार है: "ऐसा इसलिए है क्योंकि यह संदर्भ कॉन्फ़िगरेशन को अधिक आक्रामक रूप से संशोधित करता है क्योंकि मुख्य conf/server.xml फ़ाइल को टॉमकैट को पुनरारंभ किए बिना पुनः लोड नहीं किया जा सकता है।" नीचे दिया गया स्वीकार्य उत्तर सीधे समस्या हल करता है, लेकिन यदि आप इस पथ को फिर से संशोधित करने की संभावना नहीं रखते हैं या पुनरारंभ नहीं करते हैं तो बहुत विघटनकारी नहीं होते हैं, server.xml को संशोधित करना सभी अनुचित नहीं लगता है। – rimsky

उत्तर

191

आप क्या कर सकते हैं निम्नलिखित है;

<catalina_home>/conf/Catalina/localhost/

यह ROOT.xml में एक फ़ाइल ROOT.xml बुलाया जोड़े है कि इंजन और मेजबान (कैटालिना और स्थानीय होस्ट) के लिए बिल्ला स्थापना की जड़ संदर्भ के लिए डिफ़ॉल्ट सेटिंग्स पर आ जाएगी।

ROOT.xml फ़ाइल में निम्न दर्ज करें;

<Context 
    docBase="<yourApp>" 
    path="" 
    reloadable="true" 
/> 

यहाँ, <yourApp>, की, ठीक है, अपने अनुप्रयोग नाम है .. :)

और वहाँ तुम जाओ अपने आवेदन अब डिफ़ॉल्ट अनुप्रयोग है और http://localhost:8080

पर दिखाई देगा हालांकि , एक तरफ प्रभाव है; आपका आवेदन दो बार लोड किया जाएगा। एक बार localhost:8080 और localhost:8080/yourApp के लिए एक बार। इसे ठीक करने के लिए आप अपना आवेदन आउटपुट <catalina_home>/webapps डाल सकते हैं और ROOT.xml के डॉकबेस टैग में एक सापेक्ष या पूर्ण पथ का उपयोग कर सकते हैं। कुछ इस तरह;

<Context 
    docBase="/opt/mywebapps/<yourApp>" 
    path="" 
    reloadable="true" 
/> 

और फिर यह ठीक होना चाहिए!

+21

नीचे मतदान किया? ठीक है, लेकिन क्यों? यदि कोई बेहतर विकल्प है, तो मुझे भी बताएं! : डी – Paaske

+1

क्या यह नियमित वेबपैस फ़ोल्डर में अन्य युद्धों के साथ काम करेगा? – chrislovecnm

+1

दस्तावेज़ों को देखकर http://tomcat.apache.org/tomcat-7.0-doc/config/context.html docbase पथ/to/yourApp और पथ होना चाहिए (इसलिए एक खाली स्ट्रिंग) जिसका मूल संदर्भ है –

11

यहां केवल समाधान हैं जो मेरे लिए काम करते हैं। conf/server.xml

<Context path="" docBase="yourAppContextName"> 

    <!-- Default set of monitored resources --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 

</Context> 

बिलाव सर्वर से जाना में होस्ट नोड के लिए इस जोड़ें।xml फ़ाइल और पथ खाली

+1

'server.xml' या 'context.xml' पर होगा? मैं अपने 'context.xml' – Saif

+5

में एक एक्सएमएल टैग' 'देखता हूं। server.xml में एक संदर्भ xml टैग भी है, हालांकि संदर्भ परिभाषा के लिए server.xml उपयोग –

3

सेट इस छोटे कोड मेरे लिए काम किया, आभासी मेजबान

<Host name="my.host.name" > 
    <Context path="" docBase="/path/to/myapp.war"/> 
</Host> 
+0

को हतोत्साहित किया गया है यह 'server.xml' में है? उदाहरण के अनुसार अली। मोजटेहेडी उस समस्याग्रस्त से ऊपर है। साथ ही, अन्य उत्तरों बताते हैं कि सामान्य वेबपैस पथ के बाहर * पथ/से * होना चाहिए। –

+0

ठीक काम करने लगता है। बेशक, आप नहीं चाहते कि रूट एप्लिकेशन उसी वेबपैस फ़ोल्डर में मौजूद हो जो आपके साथ संघर्ष कर सके। –

+0

यह एकमात्र चीज थी जो मेरे लिए काम करती थी! धन्यवाद। – cgTag

-7

नीचे चाल मेरे लिए काम किया इस्तेमाल करते हैं।

1) tomcat के server.xml फ़ाइल (conf फ़ोल्डर के अंदर) से नीचे कॉन्फ़िगरेशन टिप्पणी/हटाएं।

2) मौजूदा रूट फ़ोल्डर (यदि कोई है) को हटाएं तो टॉमकैट वेबपैस फ़ोल्डर के अंदर रहें। और अपने युद्ध का नाम बदलें (उदाहरण: test.war) फ़ाइल ROOT.war पर।

याद रखें कि ROOT.war "रूट" में युद्ध फ़ाइल का नाम बदलने के दौरान कैप्स में होना चाहिए।

सीमा: आप केवल एक एप्लिकेशन को एक टोमकैट उदाहरण के अंदर तैनात कर सकते हैं।

+3

प्रश्न से: "मुझे पता है कि मैं रूट करने के लिए अपने वेबपैप (या इसकी WAR फ़ाइल) का नाम बदल सकता हूं लेकिन यह करने के लिए यह एक भयानक तरीका है, IMHO।" –

+1

मैं प्रति टॉमकैट उदाहरण प्रति एक वेबपैप का उपयोग करने के लिए खुद को प्रतिबंधित नहीं करना चाहता हूं। – tareq

1

मुझे एक महीने के लिए इस समस्या का सामना करना पड़ा, server.xml के अंदर संदर्भ टैग डालना सुरक्षित नहीं है, यह अन्य सभी होस्ट के लिए तैनाती संदर्भ तत्वों को प्रभावित करता है, बड़े ऐप्स के लिए यह कनेक्शन त्रुटियों को भी अच्छा अलगाव नहीं देता है उदाहरण के लिए आप अन्य साइटों तक पहुंच सकते हैं फ़ोल्डर नाम डोमेन 2.com/domain1Folder द्वारा !! डेटाबेस सत्र कनेक्शन भी दो बार लोड! अन्य तरीके से पूरा पथ इस तरह के साथ संदर्भ टैग है तो ROOT.xml फ़ाइल डाल दिया जाता है:

<Context path="" docBase="/var/lib/tomcat7/webapps/ROOT" /> 
conf में

/Catalina/webappsfoldername और webappsfoldername अंदर ROOT.war के रूप में युद्ध फ़ाइल को तैनात है और यह भी मेजबान ऐसे निर्दिष्ट

<Host name="domianname" appBase="webapps2" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" > 

     <Logger className="org.apache.catalina.logger.FileLogger" 
       directory="logs" prefix="localhost_log." suffix=".txt" 
      timestamp="true"/> 
</Host> 

इस दृष्टिकोण में भी इसी प्रकार के ऐप्स के लिए उपयोगकर्ता सत्रों में अच्छा अलगाव नहीं है! आप ऐप 1 के अंदर हो सकते हैं यदि ऐप 2 ऐप 2 जैसा ही है, तो आप सर्वर साइड सत्र द्वारा लॉगिन के बाद स्वचालित रूप से ऐप 2 में लॉगिन कर सकते हैं? तो आपको क्लाइंट साइड कैश में उपयोगकर्ता सत्र रखना होगा और jsessionid के साथ नहीं! हम इसे हल करने के लिए स्थानीयहोस्ट से इंजन नाम बदल सकते हैं। लेकिन कहें कि टॉमकैट के साथ खेलना अन्य बिल्लियों के साथ खेलने से ज्यादा समय चाहिए!

2

तेज और सबसे अच्छा समाधान हो सकता है <TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml

<Context 
    docBase="/your_webapp_location_directory" 
    path="" 
    reloadable="true" 
/> 

में सामग्री नीचे है और अपने webapp या कम से http://<host>:<port>/

+1

क्या वह डॉकबेस निर्देशिका एक विशिष्ट फ़ोल्डर के पूर्ण या सापेक्ष है? –

+0

मैंने कोशिश की, लेकिन यह काम नहीं कर रहा है। मेरे पास 'फूबर' नामक ऐप है जिसे '/ opt/tomcat/webapps/foobar' में रखा गया है। मैंने 'फोबार' और 'ऑप्ट/टॉमकैट/वेबपैप्स/फूओबर' पर डॉकबेस सेट करने की कोशिश की, लेकिन जब मैं 'http: // : /पर जाता हूं/मैं अभी भी अपने फूबर ऐप के बजाय टॉमकैट होम पेज देखता हूं। मैंने टॉमकैट को फिर से शुरू किया। मैं क्या गलत कर रहा हूं? – kimbaudi

-1

यह server.xml की तरह सर्वर विन्यास को अद्यतन करने की सिफारिश नहीं की है उपलब्ध हो जाएगा ROOT.xml।

आप संदर्भ पथ सेटिंग के साथ अपने वेब-एप्लिकेशन मेटा-आईएनएफ निर्देशिका के तहत एक संदर्भ.एक्सएमएल कॉन्फ़िगरेशन फ़ाइल डाल सकते हैं। यह डिफ़ॉल्ट सर्वर सेटिंग ओवरराइड करेगा?

यानी .:

<Context docBase="yourAppName" path="/yourAppPath" reloadable="true"> 
1

<Context docBase="yourAppName" path="" reloadable="true">

बिलाव server.xml फ़ाइल और पथ खाली

1

बिलाव 9 में स्थापित करने के लिए जाना।0, मैं केवल में server.xml

<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.jee.server:web"/></Host> 

को
<Context docBase="web" path="" reloadable="true" source="org.eclipse.jst.jee.server:web"/></Host> 
+0

अंत से हटाएं। – sweetfa