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

Resuelto iamjustcoder asked hace 13 años • 10 respuestas

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

iamjustcoder avatar Mar 16 '11 23:03 iamjustcoder
Aceptado

Tienes unas cuantas opciones:

  1. Elimine el directorio listo para usar ROOT/de Tomcat y cambie el nombre de su archivo war ROOT.warantes de implementarlo.

  2. Implemente su guerra como (de su ejemplo) war_name.wary configure la raíz de contexto para conf/server.xmlusar su archivo war:

    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
    

El primero es más fácil, pero un poco más complicado. La segunda es probablemente la forma más elegante de hacerlo.

Rob Hruska avatar Mar 16 '2011 16:03 Rob Hruska

en Tomcat v.7 (instalación básica)

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

<Context path="" docBase="app_name">
    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Tenga en cuenta el atributo docBase . Es lo importante. Puede asegurarse de haber implementado app_name antes de cambiar su aplicación web raíz, o simplemente copiar su aplicación web descomprimida (app_name) en la carpeta de aplicaciones web de su Tomcat. ¡Inicie, visite la raíz, vea el nombre de su aplicación allí!

Peter Perháč avatar Jul 26 '2012 22:07 Peter Perháč

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

<Context path="" docBase="myAPP">
     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Agregue arriba a la <Host>sección en server.xml

Sudheer Palyam avatar Aug 14 '2013 08:08 Sudheer Palyam

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 war 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 administración (me doy cuenta de que los sistemas *nix requieren un superusuario para vincularse al 80, pero en Windows esto no es un problema).

Esto significa que solo tiene que reiniciar Tomcat una vez y, después de actualizar, los archivos war se pueden implementar sin problemas.

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

<Connector 
    port="8080"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

Paso 2: Defina contextos dentro de la <Host ...>etiqueta:

<Context path="/" docBase="CAS">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

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

Cuando implementa un archivo CAS.war que coincide con la raíz ( <Context path="/" docBase="CAS">debe volver a cargarlo en el panel de administración, ya que no se actualiza con la implementación).

No incluya <Context path="/CAS" docBase="CAS">en sus contextos, ya que deshabilita la opción del administrador para implementar archivos war. Esto significa que puedes acceder a la aplicación de dos maneras: http://example.com/yhttp://example.com/APP/

Paso 3: Para evitar el acceso no deseado a la carpeta raíz y del administrador, agregue a valveesas etiquetas de contexto como esta:

<Context path="/manager" docBase="manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        addConnectorPort="true"
        allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>

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

Si desea utilizar esto para varias aplicaciones que utilizan diferentes direcciones IP, 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 cambiar la base de documentos de, <Context path="/" docBase="CAS">por ejemplo <Context path="/" docBase="ICR">, .

KimvdLinde avatar Oct 20 '2015 23:10 KimvdLinde

Eliminar $CATALINA_HOME/webapps/ROOT. Actualizar $CATALINA_HOME/conf/server.xml, asegúrese de que el elemento Host se parezca al siguiente texto:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="false" deployOnStartup="false">
  <Context path="" docBase="myApp"></Context>

Funciona con Tomcat 8. autoDeploy y desplegarOnStartup deben establecerse en falso para evitar que Tomcat se implemente myAppdos veces.

Jingguo Yao avatar May 13 '2015 13:05 Jingguo Yao