ROOT एप्लीकेशन को कैसे बदलें?


130

मैं टॉमकोट 6 वेबसर्वर के डिफॉल्ट एप्लिकेशन को "ROOT" (वेबएप्स फ़ोल्डर के अंदर) की तुलना में एक अलग एप्लिकेशन में बदलने की कोशिश कर रहा हूं। इसे करने का बेहतरीन तरीका क्या है?

जवाबों:


129

इसकी तीन विधियाँ हैं:

  • पहले अपनी टॉम्केट को उसकी binडायरेक्टरी ( sh shutdown.sh) से बंद करें । फिर अपने टॉमकैट webappsफ़ोल्डर की सभी सामग्री को हटा दें ( rm -fr *)। फिर अपनी WAR फ़ाइल का नाम बदलेंROOT.war , और अंत में binडायरेक्टरी ( sh startup.sh) से अपनी टॉमकैट शुरू करें ।

  • $CATALINA_BASE/webappsअपने मूल नाम के तहत अपनी युद्ध फ़ाइल छोड़ दें । फ़ाइल में अपने होस्ट तत्व में स्वतःप्रमाण और तैनातीऑनस्टार्टअप बंद करें server.xml। स्पष्ट रूप से सभी एप्लिकेशन संदर्भों को परिभाषित server.xmlकरते हैं, दोनों पथ और डॉकबेस निर्दिष्ट करते हैं विशेषताओं । ऐसा आपको अवश्य करना चाहिए क्योंकि आपने सभी टॉमकैट ऑटो-परिनियोजित तंत्रों को निष्क्रिय कर दिया है, और टॉमकैट आपके अनुप्रयोगों को तब तक तैनात नहीं करेगा जब तक कि यह उनके संदर्भ में नहीं मिलता है server.xml

    दूसरी विधि: किसी भी एप्लिकेशन में कोई भी परिवर्तन करने के लिए, आपको टोमाकट को रोकना और पुनः आरंभ करना होगा।

  • अपनी WAR फ़ाइल को बाहर रखें $CATALINA_BASE/webapps(यह दोहरी तैनाती को रोकने के लिए बाहर होनी चाहिए)। नाम के एक प्रसंग फ़ाइल जगह ROOT.xmlमें $CATALINA_BASE/conf/। इस संदर्भ फ़ाइल में एकल तत्व के पास आपके WAR फ़ाइल के स्थान की ओर इशारा करते हुए एक डॉकबेस विशेषता है। पथ तत्व सेट नहीं किया जाना चाहिए - यह .xmlफ़ाइल के नाम से लिया गया है, इस मामले में ROOT.xml। देखें प्रसंग कंटेनर के लिए दस्तावेज़ जानकारी के लिए।

संदर्भ


4
मैंने पहली विधि की कोशिश की और यह काम करता है! Bdw - आपको सब कुछ हटाने की आवश्यकता नहीं है। मैंने बस रूट फ़ोल्डर को हटा दिया और अपना युद्ध नाम बदलकर ROOT.war कर दिया और यह एक आकर्षण की तरह काम करता है।
15

मुझे पता है कि वास्तव में इसके नियमों का पालन नहीं किया गया है, लेकिन यह पेंच है ..... धन्यवाद! काश मैं एक से अधिक बार उत्थान कर पाता। सुपर सहायक। BTW, मैं था , बिल्ला से पहले इस काम करेगा पुनः आरंभ करने के @hostnik।
बुरा पेस्टी

@ डैनी-लंदन की तीसरी विधि ने टॉमकैट 7 में मेरे लिए काम नहीं किया, लेकिन यह काम करता है यदि आप $CATALINA_BASE/conf/[enginename]/[hostname]निर्देशिका में ROOT.xml फ़ाइल (जो मेरे बजाय बुनियादी सेटअप के लिए है $CATALINA_HOME/conf/Catalina/localhost)। का संदर्भ लें प्रसंग कंटेनर प्रलेखन
माइकल शेपर

sudo systemctl start tomcatxx
टॉमकैट

24

एक जोड़ा जा रहा है <Context>में टैग <Host>में टैगserver.xmlटॉमकैट 6 के लिए से समस्या हल हो जाएगी।

यदि आप path=""खाली उपयोग करते हैं तो आप URL का उपयोग कर सकते हैंhttp://localhost/first.do

संदर्भ टैग सेट में विशेषताएँ docBase="E:\struts-ITRCbook\myStrutsbook"औरreloadable="true" फिर, संदर्भ टैग समाप्त करें।

यह कुछ इस तरह दिखना चाहिए:

<Host name="localhost"  appBase="webapps" 
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
    </Context>
</Host>

यह भी tomcat 7 के लिए सच है?
मैरसी सूटन

4
प्रलेखन के अनुसार: Tomcat 6 के लिए, Tomcat 4.x के विपरीत, यह <Context> तत्वों को सीधे server.xml फ़ाइल में रखने के लिए अनुशंसित नहीं है। ऐसा इसलिए है क्योंकि यह कॉनटेक्स्ट कॉन्फिग्रेशन को अधिक इनवेसिव को संशोधित करता है क्योंकि मुख्य conf / server.xml फ़ाइल को टॉमकैट को फिर से शुरू किए बिना फिर से लोड नहीं किया जा सकता है।

सूचित करें कि इस दृष्टिकोण का दुष्प्रभाव है! myStrutsbook एक बार स्थानीयहोस्ट के लिए दो बार तैनात होगी: 8080 और एक बार localhost के लिए: 8080 / myStrutsbook! और डेटाबेस कनेक्शन त्रुटियों और अधिक संसाधन उपयोग का कारण हो सकता है
Ali.Mojtehedy

24

इन परिवर्तनों के साथ बिलाव 7 में, मैं पहुँच कर सकती हूं myAPPपर /और ROOTपर/ROOT

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

<Host>सर्वर.xml में अनुभाग में ऊपर जोड़ें


बस मैं जिस उपाय की तलाश में था! धन्यवाद एक लाख, सुधीर! मेरे लिए एक आकर्षण की तरह काम करता है। और हे! मेरा एक और प्रश्न है। जब मैं ROOT को एक्सेस करता हूं /ROOTऔर सही क्रेडेंशियल्स का उपयोग करके प्रबंधक पृष्ठ पर लॉग इन करने का प्रयास करता हूं, तो मुझे एक्सेस से वंचित कर दिया जाता है। क्या आप जानते हैं कि इसे कैसे ठीक किया जाए?
सैटर्नियन

@ सुधीर पालयम I ने भी यही किया। मैंने Server.xml फ़ाइल को बदल दिया, और फिर मैंने सर्वर शुरू किया। लेकिन जब मैंने लोकलहोस्ट: 8080 को लोड / विजिट किया, तो इसने मुझे 404 स्टेटस एरर दिखाया। यदि मैं इन पंक्तियों को server.xml से हटाता हूं, तो यह उपरोक्त पोर्ट को लोड करता है।
सचिन कुमार

16

रूट डिफॉल्ट ऐप आमतौर पर टॉमकैट मैनेजर है - जो उपयोगी हो सकता है इसलिए मुझे ऐसा लगा जैसे इसे इधर-उधर रखना है।

तो जिस तरह से मैंने अपना बनाया ऐप ROOT किया और TCmgr को इस तरह रखा।

नाम बदलकर कुछ और बनाया

mv ROOT TCmgr

फिर एक प्रतीकात्मक लिंक बनाया जिससे आरओटी उस ऐप को इंगित करता है जिसे मैं डिफ़ॉल्ट बनाना चाहता हूं।

ln -s <your app> ROOT

मेरे लिए काम किया और सबसे आसान तरीका लग रहा था।


@ आप सही हैं, लेकिन विंडोज़ में XP और प्रतीकात्मक लिंक हैं, मुझे लगता है कि आप mklink का उपयोग कर सकते हैं। कृपया ध्यान दें कि मैंने ऐसा नहीं किया है और मेरे अन्य कारण सांकेतिक लिंक का उपयोग नहीं करना है।
माइकलसन्टर

12

Apache Tomcat डॉक्स के अनुसार, आप ROOT.xml फ़ाइल बनाकर एप्लिकेशन को बदल सकते हैं। अधिक जानकारी के लिए इसे देखें:

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

"ROOT.xml नामक फ़ाइल का उपयोग करके डिफ़ॉल्ट वेब एप्लिकेशन को परिभाषित किया जा सकता है।"


12

आप इसे थोड़ा हैक-वाई तरीके से कर सकते हैं:

  1. टॉमकैट बंद करो
  2. ROOT.war को एक तरफ ले जाएं और rm -rf webapps / ROOT करें
  3. आप जिस वेबएप / ROOT.war को चाहते हैं, उसे कॉपी करें
  4. टॉमकैट शुरू करें

2
बदसूरत या शायद icky, लेकिन hacky गलत शब्द हो सकता है क्योंकि यह आधिकारिक / समर्थित तरीका प्रतीत होता है।
ब्रायन नोब्लुच

3

एक वैकल्पिक समाधान एक सर्वलेट बनाना होगा जो वांछित डिफ़ॉल्ट वेबएप पर रीडायरेक्ट भेजता है और उस सर्वलेट को रूट वेबैप में सभी यूआरएल में मैप करता है।

package com.example.servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RedirectServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.sendRedirect("/myRootWebapp");
  }
}

उपरोक्त वर्ग को इसमें जोड़ें
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet
और निम्नलिखित जोड़ें
CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml:

  <servlet>
    <display-name>Redirect</display-name>
    <servlet-name>Redirect</servlet-name>
    <servlet-class>com.example.servlet.RedirectServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Redirect</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

और अगर वांछित है तो आप आसानी से RedirectServlet को संशोधित कर सकते हैं कि आप एक इनटैम को स्वीकार कर सकते हैं ताकि आप स्रोत को संशोधित किए बिना डिफ़ॉल्ट वेबप को सेट कर सकें।

मुझे यकीन नहीं है कि ऐसा करने से कोई नकारात्मक प्रभाव पड़ेगा, लेकिन मैंने यह परीक्षण किया और यह काम करने लगता है।


2

संदर्भ। xml विन्यास मेरे लिए काम नहीं किया। टॉम्केट 6.0.29 में डॉकबेस के एपबेस के अंदर होने की शिकायत है: ... टॉमकैट 5 के लिए यह वास्तव में काम करता था।

इसलिए एक उपाय यह है कि एप्लिकेशन को रूट फ़ोल्डर में रखा जाए।

एक और बहुत ही सरल उपाय है कि सूचकांक को लागू किया जाए। आरओटी को लागू किया जाए जो इस तरह से मेरे आवेदन पर पुनर्निर्देशित करता है: प्रतिक्रिया।

सर्वश्रेष्ठ सादर, जनवरी


1

टॉमकैट को कॉन्फ़िगर करते समय मुझे एक समस्या हुई है ' server.xmlऔर संदर्भ तत्व जोड़ा गया है। वह सिर्फ मेरे विन्यास का उपयोग नहीं करना चाहता: http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html

यदि आप एक Unix-likeप्रणाली में हैं:

  1. mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
  2. ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT

किया हुआ।

मेरे लिये कार्य करता है।


1

टामकैट रूट एप्लिकेशन को बदलने का अंतिम तरीका। टॉमकैट 7 और 8 पर परीक्षण किया गया।

  1. Tomcat webapps निर्देशिका में जाएं:

    मेरी मशीन पर उदाहरण: ~/stack/apache-tomcat/webapps

  2. नाम बदलें, बदलें या रूट फ़ोल्डर हटाएँ। मेरी सलाह का नाम बदल रहा है या बैकअप के लिए एक प्रति बनाएँ। उदाहरण का नाम बदलकर RENAMED_ROOT करें:

    mv ROOT RENAMED_ROOT

  3. अपने आवेदन के साथ युद्ध फाइल को टोमैटैट वेबैप्स डायरेक्टरी में ले जाएं (इसकी एक निर्देशिका जहां पुराने ROOT फ़ोल्डर था, मेरी मशीन पर: ~ / stack / apache-tomcat / webapps)

युद्ध फ़ाइल में एक नाम ROOT.war होना चाहिए । यदि आवश्यक हो तो अपना नाम बदलें: yourApplicationName.war -> ROOT.war

  1. टॉमकट को फिर से शुरू करें। पुनः आरंभ करने के बाद आपका आवेदन एक रूट होगा।

0

मैं अपने डॉक्स को देखूंगा; ROOT (या ROOT.war) से दूर रूट वेब एप्लिकेशन का पथ बदलने के लिए कॉन्फ़िगरेशन निर्दिष्ट करने का एक तरीका है, लेकिन ऐसा लगता है कि टॉमकैट 5 और 6 के बीच बदल गया है।

यह मिला:

http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html

तो, ऐसा लगता है कि रूट पथ (ROOT.xml में) बदलना संभव है, लेकिन थोड़ा टूटा हुआ है - आपको अपने WAR को ऑटो-परिनियोजन निर्देशिका से बाहर ले जाने की आवश्यकता है। अगर मैं पूछता हूं कि सिर्फ ROOT.war में आपकी फ़ाइल का नाम बदलना क्यों एक कारगर समाधान नहीं है?


1
दुर्भाग्य से युद्ध फाइल को ROOT.war में बदलना मेरे लिए कोई विकल्प नहीं है। जैक्स

थोड़ा देर से, लेकिन ... मेरे लिए मैं इसे बदल नहीं सकता क्योंकि मैं एक तीसरे पक्ष द्वारा बनाई गई प्रणाली का उपयोग कर रहा हूं, जो लगता है कि हार्ड फ़ाइलों के लिए कुछ स्थानों को कोडित किया गया है .... इसलिए इसे ROOT.war में स्थानांतरित करना चाहिए। एक समस्या है, क्योंकि मूल आवेदन एक निर्देशिका के तहत अपने स्वयं के जार की तलाश करता है जो कि [
ओरिजिनल.पवार

0

बहुत अच्छा समाधान नहीं है, लेकिन एक तरीका यह है कि ROOT ऐप से YourWebApp पर रीडायरेक्ट किया जाए। इसके लिए आपको ROOT index.html को संशोधित करना होगा।

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
    </head>
    <body onLoad="javascript:window.location='YourWebApp';">
    </body>
</html>

या

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
        <meta http-equiv="refresh" content="0;url=YourWebApp" />
    </head>
    <body>
    </body>
</html>

संदर्भ: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html


-4

टॉमकैट 7 (विंडोज सर्वर के तहत) में मैंने किसी भी कॉन्फ़िगरेशन फ़ाइल में कुछ भी नहीं जोड़ा या संपादित नहीं किया। मैंने अभी कुछ और के लिए ROOT फ़ोल्डर का नाम बदला और अपने एप्लिकेशन फ़ोल्डर का नाम बदलकर ROOT किया और यह ठीक काम किया।


1
यह एक अच्छा समाधान हो सकता है, लेकिन जैक्स का सवाल यह है कि डिफ़ॉल्ट एप्लिकेशन को कैसे बदला जाए; ऐसे कारण हो सकते हैं कि वह ROOT फ़ोल्डर की सामग्री को क्यों नहीं बदल सकता है।
जेवीएमएटीएल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.