Desplegando mi aplicación en la raíz en Tomcat

Tengo el archivo de guerra de mi aplicación. Necesito implementar esto en el nivel raíz. La URL actual es http://localhost:8080/war_name/application_name .

Tienes unas cuantas opciones:

  1. Elimine el directorio ROOT/ de tomcat y cambie el nombre de su archivo war a ROOT.war antes de desplegarlo.

  2. Implementa tu guerra como (en tu ejemplo) war_name.war y configura la raíz de contexto en conf/server.xml para usar tu archivo war:

      

El primero es más fácil, pero un poco más kludgy. El segundo es probablemente la forma más elegante de hacerlo.

en tomcat v.7 (instalación de vanilla)

en su conf / server.xml agregue el siguiente bit hacia el final del archivo, justo antes de la etiqueta de cierre :

   WEB-INF/web.xml  

Tenga en cuenta que el atributo docBase . Es lo importante. Asegúrate de haber implementado nombre_aplicación antes de cambiar tu aplicación web raíz, o simplemente copia tu aplicación web desempaquetada (nombre_aplicación) en la carpeta webapps de tu tomcat. ¡Inicio, visite Root, vea su nombre de aplicación allí!

En tomcat 7 con estos cambios, puedo acceder a myAPP en / y ROOT en / ROOT

   WEB-INF/web.xml    WEB-INF/web.xml  

Agregue arriba a la sección en server.xml

Sé que mi respuesta se superpone con algunas de las otras respuestas, pero esta es una solución completa que tiene algunas ventajas. Esto funciona en Tomcat 8:

  1. La aplicación principal se sirve desde la raíz
  2. Se mantiene el despliegue de archivos de guerra a través de la interfaz web.
  3. La aplicación principal se ejecutará en el puerto 80 mientras que solo los administradores tienen acceso a las carpetas de gestión (me doy cuenta de que los sistemas * nix requieren superusuario para vincular a 80, pero en Windows esto no es un problema).

Esto significa que solo tiene que reiniciar el tomcat una vez, y después de actualizar los archivos war pueden desplegarse sin problemas.

Paso 1: en el archivo server.xml, encuentre la entrada del conector y reemplácela con:

   

Paso 2: defina contextos dentro de la etiqueta :

  WEB-INF/web.xml   WEB-INF/web.xml   WEB-INF/web.xml   WEB-INF/web.xml  

Tenga en cuenta que me dirigí a todas las aplicaciones en la carpeta webapp. El primero efectivamente cambia la raíz y la aplicación principal de la posición. ROOT ahora está en http://example.com/ROOT y la aplicación principal está en http://example.com/ . Las aplicaciones web protegidas con contraseña requieren el atributo privileged="true" .

Cuando despliega un archivo CAS.war que coincida con la raíz ( debe volver a cargarlo en el panel de administración ya que no se actualiza con la implementación.

No incluya en sus contextos, ya que deshabilita la opción del administrador para implementar archivos war. Esto significa que puede acceder a la aplicación de dos maneras: http://example.com/ y http://example.com/APP/

Paso 3: para evitar el acceso no deseado a la carpeta raíz y al administrador, agregue una valve a las tags de contexto como esta:

  WEB-INF/web.xml   

Esto esencialmente limita el acceso a la carpeta de la aplicación web admin a personas de mi propio dominio (dirección IP falsa) y localhost cuando usan el puerto predeterminado 8080 y mantiene la capacidad de desplegar dinámicamente los archivos war a través de la interfaz web.

Si desea usar esto para múltiples aplicaciones que usan direcciones IP diferentes, puede agregar la dirección IP al conector ( address="143.21.2.1" ).

Si desea ejecutar varias aplicaciones web desde la raíz, puede duplicar la etiqueta de servicio (use un nombre diferente para la segunda) y cambie la base de datos de para, por ejemplo, .

Elimina $CATALINA_HOME/webapps/ROOT . Actualice $CATALINA_HOME/conf/server.xml , asegúrese de que el elemento Host tenga el siguiente aspecto:

   

Funciona con Tomcat 8. autoDeploy y deployOnStartup deben establecerse en false para evitar que tomcat despliegue myApp dos veces.

La vía más rápida.

  1. Asegúrate de que no tienes implementada la aplicación ROOT, anula la implementación si tienes una

  2. Cambia el nombre de tu guerra a ROOT.war, deploy, eso es todo, no se necesitan cambios de configuración

Añadiendo al sol de @Rob Hruska, esta configuración en server.xml dentro de la sección funciona:

   

Nota: override = “true” puede ser necesario en algunos casos.

En mi servidor estoy usando esto y la función de autodeploy de root funciona bien:

   www.mysite.com