usr - tomcat webapp as root
¿Cómo cambiar la aplicación ROOT? (14)
Estoy intentando cambiar la aplicación predeterminada de un servidor web Tomcat 6 a una aplicación diferente de "ROOT" (dentro de la carpeta webapps). ¿Cuál es la mejor manera de hacer esto?
Agregar una etiqueta <Context>
en la etiqueta <Host>
en server.xml
para Tomcat 6 resolverá el problema.
Si usa path=""
empty, puede usar una URL como http://localhost/first.do
.
En el contexto, los atributos del conjunto de etiquetas docBase="E:/struts-ITRCbook/myStrutsbook"
y reloadable="true"
, y luego finaliza la etiqueta de contexto.
Debería verse algo como esto:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:/struts-ITRCbook/myStrutsbook" reloadable="true">
</Context>
</Host>
El tercer método de @danny-london no funcionó en Tomcat 7, pero funciona si coloca el archivo ROOT.xml en el directorio $CATALINA_BASE/conf/[enginename]/[hostname]
(que para mi configuración más bien básica) es $CATALINA_HOME/conf/Catalina/localhost
). Consulte la documentación del contenedor de contexto .
En Tomcat 7 (en el servidor de Windows) no agregué ni edité nada a ningún archivo de configuración. Cambié el nombre de la carpeta ROOT a otra cosa y cambié el nombre de la carpeta de mi aplicación a ROOT y funcionó bien.
En Tomcat 7 con estos cambios, puedo acceder a myAPP
en /
y ROOT
en /ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
Agregue arriba a la sección <Host>
en server.xml
Hay tres métodos:
Primero apague su Tomcat del directorio its
bin
(sh shutdown.sh
). A continuación, elimine todo el contenido de la carpeta de aplicaciones web de Tomcat (rm -fr *
). A continuación, cambie el nombre de su archivo WAR aROOT.war
, y finalmente inicie su Tomcat desde el directoriobin
(sh startup.sh
).Deje su archivo war en
$CATALINA_BASE/webapps
con su nombre original. Desactive autoDeploy y deployOnStartup en su elemento Host en el archivoserver.xml
. Defina explícitamente todos los contextos de la aplicación enserver.xml
, especificando los atributos path y docBase . Debe hacerlo porque ha desactivado todos los mecanismos de auto-despliegue de Tomcat, y Tomcat ya no desplegará sus aplicaciones a menos que encuentre su Contexto en elserver.xml
.segundo método: para realizar cualquier cambio en cualquier aplicación, deberá detener y reiniciar Tomcat.
Coloque su archivo WAR fuera de
$CATALINA_BASE/webapps
(debe estar afuera para evitar el doble despliegue). Coloque un archivo de contexto denominadoROOT.xml
en$CATALINA_BASE/conf/
. El único elemento en este archivo de contexto DEBE tener un atributo docBase que apunte a la ubicación de su archivo WAR. El elemento de ruta no se debe establecer; se deriva del nombre del archivo.xml
, en este casoROOT.xml
. Consulte la documentación del Contenedor de contexto para más detalles.
La aplicación predeterminada de ROOT suele ser Tomcat Manager, que puede ser útil, así que se sentía como mantenerla.
así que la forma en que hice mi aplicación ROOT y guardé TCmgr fue así.
renombrado como ROOT a algo más
mv ROOT TCmgr
luego creé un enlace simbólico por el cual ROOT apunta a la aplicación que quiero establecer como predeterminada.
En your app
ROOT
funcionó para mí y me pareció el enfoque más fácil.
--nestochan
La mejor forma de cambiar la aplicación raíz de tomcat. Probado en Tomcat 7 y 8.
Vaya al directorio de webapps de tomcat:
Ejemplo en mi máquina:
~/stack/apache-tomcat/webapps
Renombra, reemplaza o elimina la carpeta ROOT. Mi consejo es cambiar el nombre o crear una copia para la copia de seguridad. Ejemplo, cambie el nombre de ROOT a RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Mueva el archivo war con su aplicación al directorio webapps de tomcat (es un directorio donde estaba la carpeta ROOT anterior, en mi máquina: ~ / stack / apache-tomcat / webapps)
El archivo de guerra debe tener un nombre ROOT.war . Cambie el nombre de su aplicación si es necesario: yourApplicationName.war -> ROOT.war
- Reinicia Tomcat. Después de reiniciar su aplicación será una raíz.
No es una solución muy buena, pero una forma es redirigir desde la aplicación ROOT a YourWebApp. Para esto, necesita modificar el ROOT index.html.
<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location=''YourWebApp'';">
</body>
</html>
O
<html>
<head>
<title>Redirecting to /YourWebApp</title>
<meta http-equiv="refresh" content="0;url=YourWebApp" />
</head>
<body>
</body>
</html>
Referencia: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
Puedes hacer esto de una manera un poco hack a través de:
- Detener a Tomcat
- Mover ROOT.war a un lado y rm -rf webapps / ROOT
- Copie la aplicación web que desea webapps / ROOT.war
- Comience Tomcat
Según los documentos de Apache Tomcat, puede cambiar la aplicación creando un archivo ROOT.xml. Vea esto para más información:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
"La aplicación web predeterminada puede definirse utilizando un archivo llamado ROOT.xml".
Tengo un problema al configurar Tomcat '' server.xml
y agregué el elemento Context. Simplemente no quiere usar mi configuración: http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
Si estás en un Unix-like
:
-
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
-
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Hecho.
Funciona para mi.
Una solución alternativa sería crear un servlet que envíe un redireccionamiento a la aplicación web predeterminada deseada y asignar ese servlet a todas las direcciones URL en la aplicación web 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");
}
}
Agregue la clase anterior a
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet
.
Y agrega lo siguiente a
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>
Y si lo desea, puede modificar fácilmente el RedirectServlet para aceptar un param init para permitirle configurar la aplicación web predeterminada sin tener que modificar la fuente.
No estoy seguro de si esto tendría implicaciones negativas, pero lo probé y parece funcionar.
Veré mis documentos; hay una manera de especificar una configuración para cambiar la ruta de la aplicación web raíz lejos de ROOT (o ROOT.war), pero parece haber cambiado entre Tomcat 5 y 6.
Encontró esto:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html
Por lo tanto, parece que es posible cambiar la ruta de la raíz (en ROOT.xml), pero está un poco rota: necesita mover su WAR fuera del directorio de despliegue automático. ¿Te importa si pregunto por qué simplemente cambiar el nombre de tu archivo a ROOT.war no es una solución viable?
la configuración context.xml no funcionó para mí. Tomcat 6.0.29 se queja de que el docBase está dentro de la aplicación Base: ... Para Tomcat 5 esto realmente funcionó.
Entonces, una solución es poner la aplicación en la carpeta ROOT.
Otra solución muy simple es poner un index.jsp en ROOT que redirecciona a mi aplicación de esta manera: response.sendRedirect ("/ MyApplicationXy");
Saludos cordiales, Jan