Saya mencoba untuk mengubah aplikasi default dari server web Tomcat 6 ke aplikasi yang berbeda dari "ROOT" (di dalam folder webapps). Apa cara terbaik untuk melakukan ini?
Saya mencoba untuk mengubah aplikasi default dari server web Tomcat 6 ke aplikasi yang berbeda dari "ROOT" (di dalam folder webapps). Apa cara terbaik untuk melakukan ini?
Jawaban:
Ada tiga metode:
Pertama, matikan Tomcat Anda dari bin
direktori ( sh shutdown.sh
). Kemudian hapus semua konten Tomcat Andawebapps
folder ( rm -fr *
). Kemudian ganti nama file WAR Anda ROOT.war
, dan akhirnya mulai Tomcat Anda dari bin
direktori ( sh startup.sh
).
Tinggalkan file perang Anda di $CATALINA_BASE/webapps
bawah nama aslinya. Matikan
autoDeploy dan deployOnStartup di elemen Host Anda di server.xml
file. Tetapkan secara eksplisit semua Konteks aplikasi dalam server.xml
, yang menentukan kedua jalur atribut
dan docBase . Anda harus melakukan ini karena Anda telah menonaktifkan semua mekanisme auto-deploy Tomcat, dan Tomcat tidak akan menyebarkan aplikasi Anda lagi kecuali ia menemukan Konteksnya di server.xml
.
Metode kedua: untuk membuat perubahan pada aplikasi apa pun, Anda harus berhenti dan memulai kembali Tomcat.
Tempatkan file WAR Anda di luar $CATALINA_BASE/webapps
(itu harus di luar untuk mencegah penyebaran ganda). Tempatkan file konteks bernama ROOT.xml
di $CATALINA_BASE/conf/
. Elemen tunggal dalam file konteks ini HARUS memiliki
atribut docBase yang menunjuk ke lokasi file WAR Anda. Elemen path tidak boleh disetel - itu berasal dari nama .xml
file, dalam hal ini ROOT.xml
. Lihat dokumentasi untuk wadah Konteks untuk detailnya.
$CATALINA_BASE/conf/[enginename]/[hostname]
direktori (yang untuk pengaturan dasar saya adalah $CATALINA_HOME/conf/Catalina/localhost
). Lihat dokumentasi Context Container .
sudo systemctl start tomcatx
mana x
merupakan nomor versi
Menambahkan <Context>
tag pada <Host>
tag in server.xml
untuk Tomcat 6 akan menyelesaikan masalah.
Jika Anda menggunakan path=""
kosong, Anda dapat menggunakan URL seperti http://localhost/first.do
.
Di tag konteks atur atribut docBase="E:\struts-ITRCbook\myStrutsbook"
dan reloadable="true"
, lalu akhiri tag konteks.
Seharusnya terlihat seperti ini:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
</Context>
</Host>
Di Tomcat 7 dengan perubahan ini, saya dapat mengakses myAPP
di /
dan ROOT
di/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
Tambahkan di atas ke <Host>
bagian di server.xml
/ROOT
dan mencoba masuk ke halaman Manajer menggunakan kredensial yang benar, saya ditolak aksesnya. Apakah Anda tahu cara memperbaikinya?
Aplikasi default ROOT biasanya Tomcat Manager - yang dapat berguna jadi saya ingin menyimpannya.
Jadi cara saya membuat ROOT aplikasi saya dan menjaga TCmgr seperti ini.
berganti nama menjadi ROOT menjadi sesuatu yang lain
mv ROOT TCmgr
kemudian membuat tautan simbolis di mana ROOT menunjuk ke aplikasi yang ingin saya jadikan default.
ln -s <your app> ROOT
bekerja untuk saya dan tampaknya pendekatan yang paling mudah.
Menurut dokumentasi Apache Tomcat, Anda dapat mengubah aplikasi dengan membuat file ROOT.xml. Lihat ini untuk info lebih lanjut:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
"Aplikasi web default dapat didefinisikan dengan menggunakan file yang disebut ROOT.xml."
Anda dapat melakukan ini dengan cara yang sedikit diretas dengan:
Solusi alternatif adalah membuat servlet yang mengirim pengalihan ke webapp default yang diinginkan dan memetakan servlet ke semua url di webapp ROOT.
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");
}
}
Tambahkan kelas di atas ke
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet
.
Dan tambahkan yang berikut ini ke 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>
Dan jika diinginkan Anda dapat dengan mudah memodifikasi RedirectServlet untuk menerima param init untuk memungkinkan Anda mengatur webapp default tanpa harus memodifikasi sumbernya.
Saya tidak yakin apakah melakukan ini akan memiliki implikasi negatif, tetapi saya memang menguji ini dan sepertinya berhasil.
konfigurasi context.xml tidak berfungsi untuk saya. Tomcat 6.0.29 mengeluh tentang docBase yang berada di dalam appBase: ... Untuk Tomcat 5 ini benar-benar berfungsi.
Jadi salah satu solusinya adalah dengan meletakkan aplikasi di folder ROOT.
Solusi lain yang sangat sederhana adalah dengan meletakkan index.jsp ke ROOT yang mengalihkan ke aplikasi saya seperti ini: response.sendRedirect ("/ MyApplicationXy");
Salam, Jan
Saya punya masalah ketika mengkonfigurasi Tomcat ' server.xml
dan menambahkan elemen Konteks. Dia hanya tidak ingin menggunakan konfigurasi saya:
http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
Jika Anda berada dalam suatu Unix-like
sistem:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Selesai
Bekerja untukku.
Cara terbaik untuk mengubah aplikasi root tomcat. Diuji pada Tomcat 7 dan 8.
Pindah ke direktori webapp tomcat:
Contoh di mesin saya: ~/stack/apache-tomcat/webapps
Ganti nama, ganti atau hapus folder ROOT. Saran saya adalah mengganti nama atau membuat salinan untuk cadangan. Contoh, ganti nama ROOT menjadi RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Pindahkan file perang dengan aplikasi Anda ke direktori webapp tomcat (ini adalah direktori tempat folder ROOT lama, di komputer saya: ~ / stack / apache-tomcat / webapps)
File perang harus memiliki nama ROOT.war . Ganti nama aplikasi Anda jika perlu: yourApplicationName.war -> ROOT.war
Saya akan melihat dokumen saya; ada cara menentukan konfigurasi untuk mengubah jalur aplikasi web root dari ROOT (atau ROOT.war), tetapi tampaknya telah berubah antara Tomcat 5 dan 6.
Menemukan ini:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-aplikasi ...-td20017401.html
Jadi, tampaknya mengubah jalur root (di ROOT.xml) dimungkinkan, tetapi agak rusak - Anda harus memindahkan PERANG di luar direktori penyebaran otomatis. Keberatan jika saya bertanya mengapa hanya mengganti nama file Anda ke ROOT.war bukan solusi yang bisa diterapkan?
Bukan solusi yang sangat bagus tetapi salah satu caranya adalah dengan mengarahkan dari aplikasi ROOT ke YourWebApp. Untuk ini, Anda perlu memodifikasi ROOT index.html.
<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location='YourWebApp';">
</body>
</html>
ATAU
<html>
<head>
<title>Redirecting to /YourWebApp</title>
<meta http-equiv="refresh" content="0;url=YourWebApp" />
</head>
<body>
</body>
</html>
Referensi: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
Di Tomcat 7 (di bawah server Windows) saya tidak menambahkan atau mengedit apa pun ke file konfigurasi apa pun. Saya baru saja mengganti nama folder ROOT ke sesuatu yang lain dan mengganti nama folder aplikasi saya menjadi ROOT dan berfungsi dengan baik.