Definir el contexto de servlet en archivo WAR

er4z0r:

¿Cómo puedo decir, por ejemplo, a Tomcat que use una ruta de contexto específica cuando se le da mi archivo WAR?

Ejemplo: tengo un archivo war creado por maven build y el nombre resultante del archivo es bastante largo. Por lo tanto, no quiero que la aplicación Tomcat Manager use el nombre de archivo de la guerra como contexto.

El suministro de un context.xml en META-INF no produjo los resultados deseados

También encontré esto en la documentación para el pathatributo de Context:

El valor de este campo no debe establecerse excepto cuando se define estáticamente un Contexto en server.xml, ya que se deducirá de los nombres de archivo utilizados para el archivo de contexto .xml o docBase.

Por lo tanto, no parece ser la forma correcta de decirle al servidor de aplicaciones cuál debería ser la ruta para mi WAR.

¿Más pistas?

Pascal Thivent:

Hay dos puntos importantes en la documentación del Context Container :

  • En archivos individuales (con extensión ".xml") en el $CATALINA_BASE/conf/[enginename]/[hostname]/directorio. El nombre del archivo (menos la extensión .xml) se utilizará como ruta de contexto . Las rutas de contexto de varios niveles se pueden definir usando #, por ejemplo, foo # bar.xml para una ruta de contexto de / foo / bar. La aplicación web predeterminada se puede definir mediante un archivo llamado ROOT.xml.
  • Solo si no existe un archivo de contexto para la aplicación en $CATALINA_BASE/conf/[enginename]/[hostname]/, en un archivo individual /META-INF/context.xmldentro de los archivos de la aplicación. Si la aplicación web está empaquetada como WAR /META-INF/context.xml, se copiará $CATALINA_BASE/conf/[enginename]/[hostname]/y se le cambiará el nombre para que coincida con la ruta de contexto de la aplicación . Una vez que este archivo existe, no se reemplazará si /META-INF/context.xmlse coloca un nuevo WAR con uno más nuevo en la base de aplicaciones del host.

Por lo tanto, cuando agrupa a META-INF/context.xml, el archivo se renombra al nombre del WAR y este nombre se convierte en la ruta de contexto, independientemente de cualquiera pathdefinido en el Contextelemento.

Veo así dos opciones aquí:

  1. Establezca el nombre de la guerra generada en un nombre más corto (sugiero usar <finalName>over <warName>which está obsoleto AFAIK):

    <project>
      ...
      <build>
        <finalName>mycontext</finalName>
        ...
      </build>
      ...
    </project>
    
  2. O use maven-tomcat-pluginpara la implementación y establezca la ruta de contexto en la configuración del complemento:

    <project>
      ...
      <build>
        ...
        <plugins>
          ...
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <configuration>
              <path>/mycontext</path>
            </configuration>
          </plugin>
          ...
        </plugins>
        ...
      </build>
      ...
    </project>
    

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Cómo leer el esquema xml desde el archivo jar en un contexto de servlet

Cómo definir el orden de ejecución del filtro de servlet usando anotaciones en WAR

¿El contexto de una aplicación siempre necesita que se cargue un archivo war en el servidor?

¿Cómo evitar el componente de carga del archivo Spring Boot War dos veces en un contexto separado?

Cómo implementar el archivo war en el contexto raíz (/) en Wildfly ver 9.0.1

Camunda: javax.servlet.ServletException: no se pudo leer el archivo de configuración del filtro de seguridad '/securityFilterRules.json': no existe tal recurso en el contexto del servlet

cargar el archivo hdfs en el contexto de Spark

¿Cómo puedo especificar la "ruta de contexto" en Tomcat 8 dentro de META-INF / context.xml en el archivo war de Java?

Implementar Angular 6 en el archivo WAR de Java

favicon.ico en el archivo WAR de Java

Excluir archivos de propiedades en el archivo * .war usando ensamblados

Servlet.service () para servlet [despachador] en el contexto de la ruta [/ ***] lanzó excepción

Filtrar la lista de objetos en el contexto del servlet en la página jsp

Implementar el archivo .war en el contenedor de Docker: sin atributo de manifiesto principal en app.war

Cómo obtener y establecer un objeto global en el contexto de un servlet de Java

¿Cómo resolver el error de contexto de servlet en Spring?

El archivo de contexto no se carga Tomcat

no se puede abrir el flujo de entrada para el recurso * .class en el archivo * .war

¿Cómo configurar la ruta de contexto de Tomcat para la aplicación web? El nombre del archivo .war aparece delante del nombre de la aplicación en la URL.

Implementar en Tomcat con el complemento Jenkins Implementar sin eliminar el archivo xml de contexto

Agregar un servlet para ejecutar en el contexto del servidor de aplicaciones Intershop 7.4

Copiar archivo al volumen de Docker en el contexto de Azure

¿Existe una abreviatura para crear una constante de cadena en el archivo XML de contexto Spring?

guardar el contexto del dispositivo de una captura de pantalla en un archivo bmp

El contenido estático de Spring Boot y Thymeleaf no se sirve en el archivo war

El archivo .war no se implementa en el entorno de Elastic Beanstalk

¿Cómo ejecutar el archivo WAR de la aplicación Grails en el servidor web Apache?

Maven: creación de un único archivo war basado en java / servlet a partir de varios módulos

Java: ¿Qué constituye un archivo "normal" en el contexto de File.isFile ()?