ROOT uygulaması nasıl değiştirilir?


130

Tomcat 6 web sunucusunun varsayılan uygulamasını "ROOT" dışında farklı bir uygulamaya (webapps klasörü içinde) değiştirmeye çalışıyorum. Bunu yapmanın en iyi yolu nedir?

Yanıtlar:


129

Üç yöntem vardır:

  • İlk önce Tomcat'inizi bindizininden ( sh shutdown.sh) kapatın . Ardından Tomcat webappsklasörünüzün ( rm -fr *) tüm içeriğini silin . Sonra WAR dosyanızı olarak yeniden adlandırın ROOT.warve sonunda Tomcat'inizi bin( sh startup.sh) dizininden başlatın .

  • Savaş dosyanızı $CATALINA_BASE/webappsorijinal adıyla bırakın . Dosyadaki Host öğenizde autoDeploy ve deployOnStartup'ı kapatın server.xml. Açıkça tüm uygulama Bağlamları'nın tanımlamak server.xmlhem belirterek, yolu ve docBase bağlıyor. Bunu, tüm Tomcat otomatik dağıtım mekanizmalarını devre dışı bıraktığınız için yapmanız gerekir ve Tomcat server.xml,.

    ikinci yöntem: herhangi bir uygulamada herhangi bir değişiklik yapmak için Tomcat'i durdurup yeniden başlatmanız gerekecektir.

  • WAR dosyanızı dışına yerleştirin $CATALINA_BASE/webapps(çift dağıtımı önlemek için dışarıda olmalıdır). Adlı bir bağlam dosyası ROOT.xmlyerleştirin $CATALINA_BASE/conf/. Bu bağlam dosyasındaki tek öğenin , WAR dosyanızın konumuna işaret eden bir docBase özniteliğine sahip olması ZORUNLUdur . Yol öğesi ayarlanmamalıdır - .xmlbu durumda dosyanın adından türetilir ROOT.xml. Ayrıntılar için Bağlam kapsayıcısının belgelerine bakın.

Referans


4
İlk yöntemi denedim ve işe yarıyor! Bdw - her şeyi silmenize gerek YOKTUR. ROOT klasörünü yeni sildim ve savaşımı ROOT.war olarak yeniden adlandırdım ve bir cazibe gibi çalışıyor.
hostnik

Bunun gerçek kurallara uymadığını biliyorum ama siktir et ..... Teşekkürler! Keşke birden fazla oy verebilseydim. Çok yardımcı oldu. BTW, bu işe yaramadan önce tomcat'i yeniden başlatmak zorunda kaldım , @hostnik.
iğrenç

@ danny-london'un üçüncü yöntemi Tomcat 7'de benim için işe yaramadı, ancak ROOT.xml dosyasını $CATALINA_BASE/conf/[enginename]/[hostname]dizine yerleştirirseniz işe yarıyor (ki bu benim oldukça basit kurulumum için $CATALINA_HOME/conf/Catalina/localhost). Bağlam Kapsayıcı belgelerine bakın .
Michael Scheper

Tomcat'i başlatmak için modern bir alternatif: sürüm numarası sudo systemctl start tomcatxnerede xduruyor
EarthMind

24

Tomcat 6 için etiketine bir <Context>etiket eklemek sorunu çözecektir.<Host>server.xml

Eğer kullanırsanız path=""boşaltmak sen gibi bir URL kullanabilirsiniz http://localhost/first.do.

Bağlam etiketinde nitelikleri ayarlayın docBase="E:\struts-ITRCbook\myStrutsbook"ve reloadable="true"ardından bağlam etiketini sonlandırın.

Bunun gibi bir şeye benzemeli:

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

bu aynı zamanda tomcat 7 için de geçerli mi?
Marcy Sutton

4
Belgelere göre: Tomcat 6 için, Tomcat 4.x'ten farklı olarak, <Context> öğelerinin doğrudan server.xml dosyasına yerleştirilmesi ÖNERİLMEZ. Bunun nedeni, ana conf / server.xml dosyası Tomcat'i yeniden başlatmadan yeniden yüklenemeyeceği için Bağlam yapılandırmasını değiştirmeyi daha istilacı hale getirmesidir.

bu yaklaşımın yan etkisi olduğunu bildirelim! myStrutsbook iki kez yerel ana bilgisayar için bir kez: 8080 ve yerel ana bilgisayar için bir kez: 8080 / myStrutsbook! ve veritabanı bağlantı hatalarına ve daha fazla kaynak kullanımına neden olabilir
Ali.Mojtehedy

24

Bu değişikliklerle Tomcat 7 i erişmek mümkün değilim myAPPde /ve ROOTde/ROOT

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

<Host>Server.xml'deki bölümün üstüne ekleyin


Tam aradığım çözüm! Bir milyon teşekkürler, Sudheer! Benim için bir cazibe gibi çalışıyor. Ve hey! Başka bir sorum daha var. ROOT'a eriştiğimde ve /ROOTdoğru kimlik bilgilerini kullanarak Yönetici sayfasına giriş yapmayı denediğimde, erişim reddedildi. Bunu nasıl düzelteceğinizi biliyor musunuz?
Satürn

@Sudheer Palyam Ben de aynısını yaptım. Server.xml dosyasını değiştirdim ve ardından sunucuyu başlattım. Ancak localhost'u yüklediğimde / ziyaret ettiğimde: 8080, bana 404 durum hatası gösterdi. Bu satırları server.xml'den silersem, yukarıdaki portu yükler.
Sachin Kumar

16

ROOT varsayılan uygulaması genellikle Tomcat Manager'dır - bu yararlı olabilir, bu yüzden etrafta tutmak istediğimi hissettim.

Yani benim yaptığım yol app KÖK ve TCmgr böyleydi tuttu.

ROOT adını başka bir şeye dönüştürdü

mv ROOT TCmgr

sonra ROOT'un varsayılan yapmak istediğim uygulamaya işaret ettiği sembolik bir bağlantı oluşturdum.

ln -s <your app> ROOT

benim için çalıştı ve en kolay yaklaşım gibi görünüyordu.


@Vic haklısınız, ancak pencerelerin sembolik bağlantıları var, XP ve üzeri sürümlerde mklink'i kullanabileceğinizi düşünüyorum. Lütfen bunu yapmadığımı ve sembolik bağlantıları kullanmamak için başka nedenlerimin olduğunu unutmayın.
MichaelStoner


12

Bunu biraz hack-y yoluyla yapabilirsiniz:

  1. Tomcat'i durdur
  2. ROOT.war'ı kenara ve rm -rf webapps / ROOT'u taşıyın
  3. İstediğiniz web uygulamasını webapps / ROOT.war'a kopyalayın
  4. Tomcat'i başlatın

2
Çirkin veya belki iğrenç, ancak hacky, resmi / desteklenen yöntem gibi göründüğü için yanlış terim olabilir.
Brian Knoblauch

3

Alternatif bir çözüm, istenen varsayılan web uygulamasına bir yönlendirme gönderen ve bu sunucu uygulamasını ROOT web uygulamasındaki tüm url'lere eşleyen bir sunucu uygulaması oluşturmak olabilir.

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");
  }
}

Yukarıdaki sınıfı ekleyin
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet.
Ve aşağıdakileri ekleyin
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>

Ve istenirse, kaynağı değiştirmeden varsayılan web uygulamasını ayarlamanıza izin vermek için RedirectServlet'i bir başlatma parametresini kabul edecek şekilde kolayca değiştirebilirsiniz.

Bunu yapmanın herhangi bir olumsuz etkisi olup olmayacağından emin değilim, ancak bunu test ettim ve işe yarıyor gibi görünüyor.


2

context.xml yapılandırması benim için çalışmadı. Tomcat 6.0.29, docBase'in appBase içinde olduğundan şikayet ediyor: ... Tomcat 5 için bu gerçekten işe yaradı.

Bu yüzden bir çözüm, uygulamayı ROOT klasörüne koymaktır.

Çok basit bir başka çözüm de ROOT'a bir index.jsp koyup benim uygulamama şu şekilde yönlendirmektir: response.sendRedirect ("/ MyApplicationXy");

Saygılarımızla, Jan



1

Tomcat kök uygulamasını değiştirmenin en iyi yolu. Tomcat 7 ve 8'de test edilmiştir.

  1. Tomcat webapps dizinine gidin:

    Makinemdeki örnek: ~/stack/apache-tomcat/webapps

  2. ROOT klasörünü yeniden adlandırın, değiştirin veya silin. Tavsiyem, yeniden adlandırmak veya yedekleme için bir kopya oluşturmaktır. Örnek ROOT'u RENAMED_ROOT olarak yeniden adlandırın:

    mv ROOT RENAMED_ROOT

  3. Savaş dosyasını uygulamanızla birlikte tomcat webapps dizinine taşıyın (bu, makinemde eski ROOT klasörünün bulunduğu bir dizin: ~ / stack / apache-tomcat / webapps)

Savaş dosyası ROOT.war adına sahip olmalıdır . Gerekirse uygulamanızı yeniden adlandırın: yourApplicationName.war -> ROOT.war

  1. Tomcat'i yeniden başlatın. Yeniden başlattıktan sonra uygulamanız bir kök olacaktır.

0

Belgelerime bakacağım; Root'tan (veya ROOT.war) kök web uygulamasının yolunu değiştirmek için bir konfigürasyon belirlemenin bir yolu var, ancak Tomcat 5 ve 6 arasında değişmiş gibi görünüyor.

Bunu buldum:

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

Öyleyse, kök yolunu (ROOT.xml'de) değiştirmek mümkün gibi görünüyor, ancak biraz bozuk - WAR'ınızı otomatik dağıtım dizininin dışına taşımanız gerekiyor. Dosyanızı ROOT.war olarak yeniden adlandırmanın neden işe yarar bir çözüm olmadığını sormamın bir sakıncası var mı?


1
Maalesef savaş dosyasını ROOT.war olarak değiştirmek benim için bir seçenek değil. Jacques

biraz geç, ama ... benim için değiştiremiyorum çünkü üçüncü bir şahıs tarafından oluşturulmuş bir sistem kullanıyorum, bazı yerleri jar dosyalarına kodlamış gibi görünüyor .... bu yüzden onu ROOT.war'a taşıyorum sorun yaratır, çünkü orijinal uygulama [originalapp.war] içindeki bir dizin altında kendi kavanozunu arar
mur

0

Çok iyi bir çözüm değil, ancak bir yol ROOT uygulamasından YourWebApp'a yönlendirmektir. Bunun için ROOT index.html'yi değiştirmeniz gerekir.

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

VEYA

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

Referans: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html


-4

Tomcat 7'de (Windows sunucusu altında) herhangi bir yapılandırma dosyasına herhangi bir şey eklemedim veya düzenlemedim. ROOT klasörünü başka bir şeye yeniden adlandırdım ve uygulama klasörümü ROOT olarak yeniden adlandırdım ve iyi çalıştı.


1
Bu iyi bir çözüm olabilir, ancak Jaques'ın sorusu varsayılan uygulamanın nasıl değiştirileceğiyle ilgilidir; ROOT klasörünün içeriğini değiştirememesinin nedenleri olabilir.
JVMATL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.