Estoy tratando de cambiar la aplicación predeterminada de un servidor web Tomcat 6 a una aplicación diferente a "ROOT" (dentro de la carpeta webapps). ¿Cuál es la mejor manera de hacer esto?
Estoy tratando de cambiar la aplicación predeterminada de un servidor web Tomcat 6 a una aplicación diferente a "ROOT" (dentro de la carpeta webapps). ¿Cuál es la mejor manera de hacer esto?
Respuestas:
Hay tres métodos:
Primero apague su Tomcat desde su bin
directorio ( sh shutdown.sh
). Luego, elimine todo el contenido de su webapps
carpeta Tomcat ( rm -fr *
). Luego cambie el nombre de su archivo WAR ROOT.war
y finalmente inicie su Tomcat desde el bin
directorio ( sh startup.sh
).
Deje su archivo de guerra $CATALINA_BASE/webapps
con su nombre original. Desactive
autoDeploy e deployOnStartup en su elemento Host en el server.xml
archivo. Defina explícitamente todos los contextos de aplicación en server.xml
, especificando los atributos de ruta
y docBase . Debe hacerlo porque ha deshabilitado todos los mecanismos de implementación automática de Tomcat, y Tomcat ya no implementará sus aplicaciones a menos que encuentre su contexto en el server.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 una doble implementación). Coloque un archivo de contexto nombrado ROOT.xml
en $CATALINA_BASE/conf/
. El elemento único 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 debe establecerse .xml
; en este caso , se deriva del nombre del archivo ROOT.xml
. Consulte la documentación del Contexto contenedor para más detalles.
$CATALINA_BASE/conf/[enginename]/[hostname]
directorio (que para mi configuración bastante básica es $CATALINA_HOME/conf/Catalina/localhost
). Consulte la documentación del Contexto Context .
sudo systemctl start tomcatx
donde se x
encuentra el número de versión
Agregar una <Context>
etiqueta en la <Host>
etiqueta server.xml
para Tomcat 6 resolverá el problema.
Si usa path=""
vacío, puede usar una URL como http://localhost/first.do
.
En la etiqueta de contexto, configure los atributos docBase="E:\struts-ITRCbook\myStrutsbook"
y reloadable="true"
, a continuación, finalice la etiqueta de contexto.
Debería verse más o menos así:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
</Context>
</Host>
En Tomcat 7 con estos cambios, puedo acceder myAPP
en /
y ROOT
en/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
Agregue arriba a la <Host>
sección en server.xml
/ROOT
e intento iniciar sesión en la página del Administrador con las credenciales correctas, se me niega el acceso. ¿Sabrías cómo solucionar esto?
La aplicación predeterminada de ROOT suele ser Tomcat Manager, lo que puede ser útil, así que tuve ganas de mantenerlo.
Así que la forma en que hice mi aplicación ROOT y mantuve TCmgr fue así.
renombró ROOT a otra cosa
mv ROOT TCmgr
luego creó un enlace simbólico mediante el cual ROOT apunta a la aplicación que quiero que sea la predeterminada.
ln -s <your app> ROOT
funcionó para mí y parecía el enfoque más fácil.
De acuerdo con 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".
Puede hacer esto de una manera ligeramente pirata:
Una solución alternativa sería crear un servlet que envíe una redirección a la aplicación web predeterminada deseada y asignar ese servlet a todas las 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 agregue 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 parámetro de inicio que le permita configurar la aplicación web predeterminada sin tener que modificar la fuente.
No estoy seguro de si hacer esto tendría implicaciones negativas, pero lo probé y parece funcionar.
la configuración context.xml no funcionó para mí. Tomcat 6.0.29 se queja de que docBase está dentro de appBase: ... Para Tomcat 5, esto realmente funcionó.
Entonces, una solución es colocar la aplicación en la carpeta ROOT.
Otra solución muy simple es poner un index.jsp a ROOT que redirija a mi aplicación de esta manera: response.sendRedirect ("/ MyApplicationXy");
Saludos cordiales, Jan
Tengo un problema cuando configuré 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
sistema:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Hecho.
Funciona para mi.
La mejor manera de cambiar la aplicación raíz de Tomcat. Probado en Tomcat 7 y 8.
Vaya al directorio de tomba webapps:
Ejemplo en mi máquina: ~/stack/apache-tomcat/webapps
Cambiar el nombre, reemplazar o eliminar la carpeta ROOT. Mi consejo es renombrar o crear una copia de respaldo. Ejemplo renombrar ROOT a RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Mueva el archivo war con su aplicación al directorio tomcat webapps (es un directorio donde estaba la carpeta ROOT antigua, 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
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 raíz (en ROOT.xml), pero un poco roto: debe mover su WAR fuera del directorio de implementación automática. ¿Te importa si te pregunto por qué simplemente renombrar tu archivo a ROOT.war no es una solución viable?
No es una muy buena solución, 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
En Tomcat 7 (bajo el servidor de Windows) no agregué ni edité nada en ningún archivo de configuración. Acabo de cambiar el nombre de la carpeta ROOT a otra cosa y cambié el nombre de mi carpeta de aplicación a ROOT y funcionó bien.