मैं टॉमकोट 6 वेबसर्वर के डिफॉल्ट एप्लिकेशन को "ROOT" (वेबएप्स फ़ोल्डर के अंदर) की तुलना में एक अलग एप्लिकेशन में बदलने की कोशिश कर रहा हूं। इसे करने का बेहतरीन तरीका क्या है?
मैं टॉमकोट 6 वेबसर्वर के डिफॉल्ट एप्लिकेशन को "ROOT" (वेबएप्स फ़ोल्डर के अंदर) की तुलना में एक अलग एप्लिकेशन में बदलने की कोशिश कर रहा हूं। इसे करने का बेहतरीन तरीका क्या है?
जवाबों:
इसकी तीन विधियाँ हैं:
पहले अपनी टॉम्केट को उसकी 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
। देखें प्रसंग कंटेनर के लिए दस्तावेज़ जानकारी के लिए।
$CATALINA_BASE/conf/[enginename]/[hostname]
निर्देशिका में ROOT.xml फ़ाइल (जो मेरे बजाय बुनियादी सेटअप के लिए है $CATALINA_HOME/conf/Catalina/localhost
)। का संदर्भ लें प्रसंग कंटेनर प्रलेखन ।
sudo systemctl start tomcatx
x
एक जोड़ा जा रहा है <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>
इन परिवर्तनों के साथ बिलाव 7 में, मैं पहुँच कर सकती हूं myAPP
पर /
और ROOT
पर/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
<Host>
सर्वर.xml में अनुभाग में ऊपर जोड़ें
/ROOT
और सही क्रेडेंशियल्स का उपयोग करके प्रबंधक पृष्ठ पर लॉग इन करने का प्रयास करता हूं, तो मुझे एक्सेस से वंचित कर दिया जाता है। क्या आप जानते हैं कि इसे कैसे ठीक किया जाए?
रूट डिफॉल्ट ऐप आमतौर पर टॉमकैट मैनेजर है - जो उपयोगी हो सकता है इसलिए मुझे ऐसा लगा जैसे इसे इधर-उधर रखना है।
तो जिस तरह से मैंने अपना बनाया ऐप ROOT किया और TCmgr को इस तरह रखा।
नाम बदलकर कुछ और बनाया
mv ROOT TCmgr
फिर एक प्रतीकात्मक लिंक बनाया जिससे आरओटी उस ऐप को इंगित करता है जिसे मैं डिफ़ॉल्ट बनाना चाहता हूं।
ln -s <your app> ROOT
मेरे लिए काम किया और सबसे आसान तरीका लग रहा था।
Apache Tomcat डॉक्स के अनुसार, आप ROOT.xml फ़ाइल बनाकर एप्लिकेशन को बदल सकते हैं। अधिक जानकारी के लिए इसे देखें:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
"ROOT.xml नामक फ़ाइल का उपयोग करके डिफ़ॉल्ट वेब एप्लिकेशन को परिभाषित किया जा सकता है।"
आप इसे थोड़ा हैक-वाई तरीके से कर सकते हैं:
एक वैकल्पिक समाधान एक सर्वलेट बनाना होगा जो वांछित डिफ़ॉल्ट वेबएप पर रीडायरेक्ट भेजता है और उस सर्वलेट को रूट वेबैप में सभी यूआरएल में मैप करता है।
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 को संशोधित कर सकते हैं कि आप एक इनटैम को स्वीकार कर सकते हैं ताकि आप स्रोत को संशोधित किए बिना डिफ़ॉल्ट वेबप को सेट कर सकें।
मुझे यकीन नहीं है कि ऐसा करने से कोई नकारात्मक प्रभाव पड़ेगा, लेकिन मैंने यह परीक्षण किया और यह काम करने लगता है।
संदर्भ। xml विन्यास मेरे लिए काम नहीं किया। टॉम्केट 6.0.29 में डॉकबेस के एपबेस के अंदर होने की शिकायत है: ... टॉमकैट 5 के लिए यह वास्तव में काम करता था।
इसलिए एक उपाय यह है कि एप्लिकेशन को रूट फ़ोल्डर में रखा जाए।
एक और बहुत ही सरल उपाय है कि सूचकांक को लागू किया जाए। आरओटी को लागू किया जाए जो इस तरह से मेरे आवेदन पर पुनर्निर्देशित करता है: प्रतिक्रिया।
सर्वश्रेष्ठ सादर, जनवरी
टॉमकैट को कॉन्फ़िगर करते समय मुझे एक समस्या हुई है ' server.xml
और संदर्भ तत्व जोड़ा गया है। वह सिर्फ मेरे विन्यास का उपयोग नहीं करना चाहता:
http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
यदि आप एक Unix-like
प्रणाली में हैं:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
किया हुआ।
मेरे लिये कार्य करता है।
टामकैट रूट एप्लिकेशन को बदलने का अंतिम तरीका। टॉमकैट 7 और 8 पर परीक्षण किया गया।
Tomcat webapps निर्देशिका में जाएं:
मेरी मशीन पर उदाहरण: ~/stack/apache-tomcat/webapps
नाम बदलें, बदलें या रूट फ़ोल्डर हटाएँ। मेरी सलाह का नाम बदल रहा है या बैकअप के लिए एक प्रति बनाएँ। उदाहरण का नाम बदलकर RENAMED_ROOT करें:
mv ROOT RENAMED_ROOT
अपने आवेदन के साथ युद्ध फाइल को टोमैटैट वेबैप्स डायरेक्टरी में ले जाएं (इसकी एक निर्देशिका जहां पुराने ROOT फ़ोल्डर था, मेरी मशीन पर: ~ / stack / apache-tomcat / webapps)
युद्ध फ़ाइल में एक नाम ROOT.war होना चाहिए । यदि आवश्यक हो तो अपना नाम बदलें: yourApplicationName.war -> ROOT.war
मैं अपने डॉक्स को देखूंगा; ROOT (या ROOT.war) से दूर रूट वेब एप्लिकेशन का पथ बदलने के लिए कॉन्फ़िगरेशन निर्दिष्ट करने का एक तरीका है, लेकिन ऐसा लगता है कि टॉमकैट 5 और 6 के बीच बदल गया है।
यह मिला:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html
तो, ऐसा लगता है कि रूट पथ (ROOT.xml में) बदलना संभव है, लेकिन थोड़ा टूटा हुआ है - आपको अपने WAR को ऑटो-परिनियोजन निर्देशिका से बाहर ले जाने की आवश्यकता है। अगर मैं पूछता हूं कि सिर्फ ROOT.war में आपकी फ़ाइल का नाम बदलना क्यों एक कारगर समाधान नहीं है?
बहुत अच्छा समाधान नहीं है, लेकिन एक तरीका यह है कि 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
टॉमकैट 7 (विंडोज सर्वर के तहत) में मैंने किसी भी कॉन्फ़िगरेशन फ़ाइल में कुछ भी नहीं जोड़ा या संपादित नहीं किया। मैंने अभी कुछ और के लिए ROOT फ़ोल्डर का नाम बदला और अपने एप्लिकेशन फ़ोल्डर का नाम बदलकर ROOT किया और यह ठीक काम किया।