Cómo establecer la ruta de contexto de una aplicación web en Tomcat 7.0


Sé que puedo cambiar el nombre de mi webapp (o su archivo WAR) a ROOT pero esta es una forma terrible de hacerlo, en mi humilde opinión. Ahora revisé el documento de tomcat y dice

NO se recomienda colocar elementos directamente en el servidor.archivo xml

Así que traté de hacerlo otro método que sugirió.

Los elementos de contexto individuales pueden definirse explícitamente: archivo individual en / META-INF / context.xml dentro de la aplicación file.

Así que creé un /META-INF/context.xml con el siguiente código,

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>

Pero después de implementar cuando reinicié el servidor todavía no pudo cargar el contexto en"/", todavía lo cargó con el "/<WEB_APP_NAME>"

Cualquier punteros útiles.

Author: Lucky, 2011-09-02

11 answers

Lo que puedes hacer es lo siguiente;

Agregue un archivo llamado ROOT.xml en <catalina_home>/conf/Catalina/localhost/

Esta RAÍZ.xml anulará la configuración predeterminada para el contexto raíz de la instalación de tomcat para ese motor y host (Catalina y localhost).

Introduzca lo siguiente en la RAÍZ.archivo xml;

<Context 
  docBase="<yourApp>" 
  path="" 
  reloadable="true" 
/>

Aquí, <yourApp> es el nombre de tu aplicación.. :)

Y ahí lo tienes, tu aplicación es ahora la aplicación predeterminada y se mostrará en http://localhost:8080

Sin embargo, hay es un efecto secundario; su aplicación se cargará dos veces. Una vez para localhost:8080 y otra para localhost:8080/yourApp. Para solucionar esto, puede poner su aplicación FUERA DE <catalina_home>/webapps y usar una ruta relativa o absoluta en la RAÍZ.etiqueta docBase de xml. Algo como esto;

<Context 
  docBase="/opt/mywebapps/<yourApp>" 
  path="" 
  reloadable="true" 
/>

Y entonces todo debería estar bien!

 202
Author: Paaske,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-24 18:02:09

Aquí sigue las únicas soluciones que funcionaron para mí. Agregue esto al nodo Host en el conf/server.xml

<Context path="" docBase="yourAppContextName">

  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>

Vaya al servidor Tomcat.archivo xml y establecer ruta en blanco

 13
Author: rodvlopes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-27 21:09:37

Este pequeño código funcionó para mí, usando hosts virtuales

<Host name="my.host.name" >
   <Context path="" docBase="/path/to/myapp.war"/>
</Host>
 3
Author: Jorge Sanchez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-20 15:59:27

En Tomcat 9.0, solo tengo que cambiar lo siguiente en el server.xml

<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.jee.server:web"/>

A

<Context docBase="web" path="" reloadable="true" source="org.eclipse.jst.jee.server:web"/>
 3
Author: MK Yung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-09 16:04:43

Más rápido y puede ser la mejor solución es tener contenido por debajo de <TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml

<Context 
  docBase="/your_webapp_location_directory" 
  path="" 
  reloadable="true" 
/>

Y tu webapp estará disponible en http://<host>:<port>/

 2
Author: Rajesh Gheware,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-18 13:29:03

Me enfrenté a este problema durante un mes,poniendo la etiqueta de contexto dentro del servidor.xml no es seguro afecta a los elementos de contexto que se despliegan para todos los demás host, para las grandes aplicaciones toma errores de conexión también no es un buen aislamiento, por ejemplo, puede acceder a otros sitios por nombre de carpeta domain2.com/domain1Folder !! también conexiones de sesión de base de datos cargadas dos veces ! la otra forma es poner RAÍZ.archivo xml que tiene etiqueta de contexto con ruta completa como:

 <Context path="" docBase="/var/lib/tomcat7/webapps/ROOT" />

En conf / catalina / webappsfoldername y desplegar archivo de guerra como ARRAIGAR.guerra dentro de webappsfoldername y también especificar host tales

 <Host name="domianname"  appBase="webapps2" unpackWARs="true"  autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false" >

        <Logger className="org.apache.catalina.logger.FileLogger"
               directory="logs"  prefix="localhost_log." suffix=".txt"
          timestamp="true"/>
</Host>

En este enfoque también para las sesiones de usuario de aplicaciones del mismo tipo no tiene un buen aislamiento ! puede dentro de app1 si app1 igual que app2 puede después de iniciar sesión por sesión del lado del servidor automáticamente puede iniciar sesión en app2 ?! Por lo tanto, debe mantener la sesión de los usuarios en la caché del lado del cliente y no con jsessionid. podemos cambiar el nombre del motor de localhost para resolverlo. pero digamos que jugar con tomcat necesita más tiempo que jugar con otros ¡gatos!

 1
Author: Ali.Mojtehedy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-20 22:25:12

<Context docBase="yourAppName" path="" reloadable="true">

Vaya al servidor Tomcat.archivo xml y establecer ruta en blanco

 1
Author: Vipin Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-11 12:11:56

Tomcat 8 : Después de muchas búsquedas esto es solo código de trabajo: en el servidor.xml

<!-- Set /apple as default path -->
    <Host name="localhost"  appBase="webapps"
         unpackWARs="true" autoDeploy="true">
     <Context path="" docBase="apple">
         <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
     </Context>
    </Host>

Reinicie Tomcat, asegúrese de que cuando acceda a 127.0.0.1:8080, mostrará el contenido en 127.0.0.1:8080/apple

Mi proyecto fue una aplicación web java creada por netbeans ,establecí la ruta de contexto en la configuración del proyecto, no hay otra cosa, incluso puse apple.guerra en la carpeta webapps.

 1
Author: user3600935,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-03 19:43:40

No se recomienda actualizar la configuración del servidor como servidor.xml o RAÍZ.XML.

Puedes poner un contexto.archivo de configuración xml en el directorio META-INF de su aplicación web, con la configuración de la ruta de contexto incluida. ¿Esto anulará la configuración predeterminada del servidor?

Es decir:

<Context docBase="yourAppName" path="/yourAppPath" reloadable="true">
 0
Author: Ivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 04:28:57

Para mí ambas respuestas funcionaron.

  1. Añadiendo un archivo llamado ROOT.xml in / conf / Catalina/localhost /
<Context
    docBase="/tmp/wars/hpong"
  path=""
  reloadable="true"
/>
  1. Añadiendo entrada en el servidor.xml
<Service name="Catalina2">
    <Connector port="8070" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8743" />
    <Engine name="Catalina2" defaultHost="localhost">
        <Host name="localhost"
            unpackWARs="true" autoDeploy="true">
            <Context path="" docBase="/tmp/wars/hpong"  reloadable="true">
                <WatchedResource>WEB-INF/web.xml</WatchedResource>
            </Context>
      </Host>
    </Engine>
</Service>

Nota: cuando declare docBase bajo contexto, ignore appBase en el Host.

  1. Sin embargo, he preferido convertir mi nombre de guerra como ROOT.war y colocarlo bajo webapps. Así que ahora las solicitudes de url sin igual de otras guerras (contextpaths) aterrizarán en esta guerra. Esta es la mejor manera para manejar la ruta de contexto ROOT ("/**").

La segunda opción es (doble) cargar las guerras desde la carpeta Webapps también. También solo necesita una carpeta war sin comprimir que es un dolor de cabeza.

 0
Author: Kanagavelu Sugumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-18 05:29:51

El siguiente truco funcionó para mí.

1) Comentar/eliminar la siguiente configuración del servidor.archivo xml (dentro de la carpeta conf) de tomcat.

2) Elimine la carpeta RAÍZ existente (si la hay) que reside dentro de la carpeta tomcat webapps. Y cambiar el nombre de su guerra (por ejemplo: prueba.war) archivo a ROOT.guerra.

Recuerde que mientras cambia el nombre del archivo war a ROOT.la "RAÍZ" de la guerra debe estar en mayúsculas.

Limitación: Solo puede implementar una aplicación dentro de una instancia de tomcat.

 -6
Author: Kulshrest Gautam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-17 06:35:13