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?
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:
Üç yöntem vardır:
İlk önce Tomcat'inizi bin
dizininden ( sh shutdown.sh
) kapatın . Ardından Tomcat webapps
klasörünüzün ( rm -fr *
) tüm içeriğini silin . Sonra WAR dosyanızı olarak yeniden adlandırın ROOT.war
ve sonunda Tomcat'inizi bin
( sh startup.sh
) dizininden başlatın .
Savaş dosyanızı $CATALINA_BASE/webapps
orijinal 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.xml
hem 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.xml
yerleş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 - .xml
bu durumda dosyanın adından türetilir ROOT.xml
. Ayrıntılar için Bağlam kapsayıcısının belgelerine bakı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 .
sudo systemctl start tomcatx
nerede x
duruyor
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 değişikliklerle Tomcat 7 i erişmek mümkün değilim myAPP
de /
ve ROOT
de/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
<Host>
Server.xml'deki bölümün üstüne ekleyin
/ROOT
doğru kimlik bilgilerini kullanarak Yönetici sayfasına giriş yapmayı denediğimde, erişim reddedildi. Bunu nasıl düzelteceğinizi biliyor musunuz?
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.
Apache Tomcat belgelerine göre, bir ROOT.xml dosyası oluşturarak uygulamayı değiştirebilirsiniz. Daha fazla bilgi için buna bakın:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
"Varsayılan web uygulaması, ROOT.xml adlı bir dosya kullanılarak tanımlanabilir."
Bunu biraz hack-y yoluyla yapabilirsiniz:
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.
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
Tomcat'i yapılandırırken bir sorun yaşıyorum server.xml
ve Bağlam öğesi ekledim. Sadece yapılandırmamı kullanmak istemiyor:
http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
Bir Unix-like
sistem içindeyseniz :
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Bitti.
Benim için çalışıyor.
Tomcat kök uygulamasını değiştirmenin en iyi yolu. Tomcat 7 ve 8'de test edilmiştir.
Tomcat webapps dizinine gidin:
Makinemdeki örnek: ~/stack/apache-tomcat/webapps
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
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
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ı?
Ç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
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ı.