¿Cómo cambiar la raíz de contexto de un proyecto web dinámico en Eclipse?

205

Desarrollé un proyecto web dinámico en Eclipse. Puedo acceder a la aplicación a través de mi navegador usando la siguiente URL:

http://localhost:8080/MyDynamicWebApp

Quiero cambiar la URL de acceso a:

http://localhost:8080/app

Para hacerlo, cambié la raíz de contexto del proyecto "Propiedades | Configuración del proyecto web | Raíz de contexto". Sin embargo, la aplicación web todavía tiene la misma URL de acceso. He vuelto a implementar la aplicación en Tomcat y reinicié Tomcat, pero la URL de acceso es la misma que antes.

Descubrí que no había ningún server.xmlarchivo adjunto con el WARarchivo. Sin el server.xmlarchivo adjunto, ¿cómo determina Tomcat que la raíz de contexto de mi aplicación web es /MyDynamicWebAppy me permite acceder a la aplicación a través de esta URL de raíz de contexto?

Yatendra Goel
fuente

Respuestas:

331

Estoy seguro de que ya has avanzado, pero pensé que respondería de todos modos.

Algunas de estas respuestas dan soluciones alternativas. Lo que realmente debe suceder es que limpie y vuelva a publicar su proyecto para "activar" el nuevo URI. Esto se hace haciendo clic derecho en su servidor (en la vista Servidores) y seleccionando Limpiar. Luego comienzas (o lo reinicias). La mayoría de las otras respuestas aquí sugieren que haga cosas que efectivamente logren esto.

El archivo que está cambiando es a workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datmenos que tenga más de un servidor en su espacio de trabajo, en cuyo caso estará publishN.daten la misma ruta.

Espero que esto ayude a alguien.


No estoy seguro de si esta es la etiqueta adecuada o no: estoy editando esta respuesta para dar los pasos exactos para Eclipse Indigo.

  1. En las Propiedades de su proyecto , elija Configuración del proyecto web .

  2. Cambiar la raíz de contexto a la aplicación .

    captura de pantalla de las propiedades del proyecto Eclipse Configuración del proyecto web

  3. Elija Ventana> Mostrar vista> Servidores .

  4. Detenga el servidor haciendo clic en el cuadro cuadrado rojo (información sobre herramientas "Detener el servidor") o haga clic contextual en la lista del servidor para elegir "Detener".

  5. En el servidor que desea usar, haga clic contextual para elegir "Limpiar ...".

    ingrese la descripción de la imagen aquí

  6. Haga clic en Aceptar en este cuadro de diálogo de confirmación.

    Captura de pantalla del cuadro de diálogo que solicita actualizar la configuración del servidor para que coincida con la raíz de contexto modificada

Ahora puede ejecutar su aplicación con la nueva URL de "aplicación" como:

http://localhost:8080/app/

Hacer esto fuera de Eclipse, en su servidor de producción, es aún más fácil -> Cambiar el nombre del archivo war. Exporte su aplicación Vaadin como un archivo WAR ( Archivo> Exportar> Web> Archivo WAR ). Mueva el archivo WAR al contenedor de servlet de su servidor web, como Tomcat. Cambie el nombre de su archivo WAR, en este caso a app.war . Cuando inicia el contenedor de servlets, la mayoría de los casos, como Tomcat, implementarán automáticamente la aplicación, lo que incluye expandir el archivo war a una carpeta. En este caso, deberíamos ver una carpeta llamada aplicación . Usted debe ser bueno para ir. Prueba tu URL. Para un dominio como * example.com "esto sería:

http://www.example.com/app/

Los programadores de Vaadin toolkit pueden necesitar reconstruir su conjunto de widgets si usan complementos visuales.

Russ Bateman
fuente
Gran respuesta !!! Me salvas la vida. La mayoría de las otras respuestas aquí sugieren que hagas cosas que efectivamente
logren
Aquí está el genio de esta respuesta: busqué en Google mi camino a esta página y ni siquiera leí las etiquetas (estoy creando un sitio web ASP.NET usando Visual Studio). ¡Pero la solución funcionó de todos modos!
Curt
No tengo tal y opción "Configuración de proyecto web"
IntoTheDeep
Simplemente decir que workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.dates un archivo binario, que no entiendo por qué lo mencionas arriba, da la impresión de que es la solución al problema
aliopi
Pero, ¿qué pasa si no usamos Eclipse ... o cualquier IDE ... Quiero configurar mediante programación la ruta raíz del contexto de servlet. ¿Cómo debo hacer eso? en web.xml probablemente? ..
Giorgi Tsiklauri
32

Después de cambiar la raíz de contexto en las propiedades del proyecto, debe eliminar su aplicación web de Tomcat (usando Agregar y quitar ... en el menú contextual del servidor), volver a implementar, luego volver a agregar su aplicación y volver a implementar. Funcionó para mi.

Si te golpea, tienes otra opción: selecciona el servidor Tomcat en la vista Servidores. Al hacer doble clic en ese servidor (o seleccionar Abrir en el menú contextual) aparece un editor de varias páginas donde hay una página de Módulos. Aquí puede cambiar el contexto raíz de su módulo (llamado Ruta en esta página).

Csaba_H
fuente
¡Gracias! Esto hizo el truco para mí. sin embargo, incluso funciona sin cambiar la raíz de contexto en las propiedades del proyecto. ¿Me estoy perdiendo de algo?
Chris
Esto también solía funcionar para mí en versiones anteriores de Eclipse, pero en la versión actual (Luna) ahora solo funciona la opción Limpiar
Griknok
namasety, dhanywaada :) cuando inicialmente cambié mi contexto, no funcionó incluso después de reiniciar y limpiar el servidor. funcionó solo después, eliminé el proyecto y lo leí.
Yogesh Sanchihar
24

Si está ejecutando Tomcat desde Eclipse, no utiliza la configuración de su instalación real de Tomcat. Utiliza la configuración de Tomcat que creó y almacenó en el proyecto "Servidores". Si ve su espacio de trabajo de Eclipse, debería ver un proyecto llamado "Servidores". Expanda ese proyecto de "Servidores" y se encontrará con server.xml. Abra este archivo y desplácese hasta el final, y debería ver algo como esto: -

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

Aquí, puede cambiar la ruta de contexto de su proyecto a otra cosa.

Espero que esto ayude.

limc
fuente
No estoy seguro de que quieras cambiar los 3 valores. La solución de Csaba_H funcionó para mí y eso solo cambia el atributo "path" ...
Chris
Este no funcionó para mí: los archivos en ese directorio se sobrescriben cuando reinicia el servidor. La versión dos de Csaba_H, pestaña Módulos en Tomcat Server, parece ser el enfoque "correcto".
idarwin
17

Probé la solución sugerida por Russ Bateman Aquí en la publicación

http://localhost:8080/Myapp a http://localhost:8080/somepath/Myapp

Pero Didnt funcionó para mí, ya que necesitaba tener un archivo * .war que pueda contener la configuración y no la instancia individual del servidor en mi máquina local.

Referencia

Para hacer eso necesito jboss-web.xml colocado en WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
 <!--
Copyright (c) 2008 Object Computing, Inc.
All rights reserved.
-->
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

  <jboss-web>
  <context-root>somepath/Myapp</context-root>
  </jboss-web>
tosha Shah
fuente
Esto funcionó para mí. Entorno = Eclipse + m2e + m2e-wtp + desplegando a JBoss desde la vista Servidores. Necesitaba implementar el proyecto web principal como ROOT y ninguna configuración de Eclipse hizo el truco. Copié el archivo de Tosha (arriba) y coloco "ROOT" sin comillas como el valor raíz del contexto. Hecho y hecho. Gracias, @Tosha!
Steven Francolla
Esto funciona, pero me pregunto por qué ignora la configuración en las propiedades del proyecto.
Vedran
44
Funciona con JBoss WildFly 8.1.0 Final
alexander
Migré de MyEclipse 8.6 a Eclipse y no pude implementarlo con el contexto raíz '/'. Agregar jboss-web.xml funcionó con éxito. servidor: Jboss AS 5.1 Eclipse Luna.
Sai
9

Establecer la ruta a nada en el cuadro de diálogo de edición de módulos web de Eclipse me permitió acceder al proyecto sin ningún componente de ruta en la URL (es decir, ROOT)

Puede acceder al diálogo de edición de módulos web presionando F3 si selecciona Tomcat en la vista "Servidores" o haciendo doble clic en él.

Algunas capturas de pantalla:

Ray Hulha
fuente
Lo siento, pero ¿puedes dar más detalles sobre esto?
smonff
¡Oh gracias! Sin /embargo, en Eclipse Luna en GNU / Linux, se requiere a.
smonff
1
Usé Eclipse Mars (4.5) en Win7.
Ray Hulha
6

Apache tomcat mantiene la ruta de contexto del proyecto en la ruta server.xml. Para cada proyecto web en Eclipse, hay una etiqueta desde allí que puede cambiarlo.
Supongamos que hay dos o tres proyectos implementados en el servidor. Para cada ruta de contexto se almacena en. Esta etiqueta se encuentra en el archivo server.xml dentro del servidor creado en eclipse.

Tengo un proyecto para allí en la ruta raíz del contexto en el servidor:

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

Esta ruta representa la ruta de contexto de su aplicación web. Al cambiar esta ruta, la ruta de contexto de su aplicación web cambiará.

Amar Poddar
fuente
6

Sé que la respuesta ya ha sido aceptada. Pero, en caso de que alguien que use Maven quiera lograr lo mismo, simplemente configure el finalName en la compilación de maven para cualquier nombre que desee dar y haga un maven -> proyecto de actualización

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>
Karthik
fuente
4

Si el proyecto es maven, cambie el "finalName" en pom.xml y actualice Project como Maven. Esto funcionó para mí.

Sudarshani Perera
fuente
2

En Glassfish también debe cambiar el archivo WEB-INF / glassfish-web.xml

<glassfish-web-app>
    <context-root>/myapp</context-root>
</glassfish-web-app>

Por lo tanto, cuando haga clic en "Ejecutar como> Ejecutar en el servidor" , se abrirá correctamente.

Alan Weiss
fuente
Si debemos. Agradable compartir.
Dinath
2

Solo quería agregar que si no desea el nombre de su aplicación en el contexto raíz, simplemente coloque "/" (sin comillas, solo la barra diagonal) en Eclipse -> Configuración del proyecto web -> Entrada raíz de contexto

Eso desplegará la aplicación web solo en http: // localhost: 8080 /

Por supuesto, esto causará problemas con otras aplicaciones web que intente ejecutar en el servidor, así que no se preocupe.

Me llevó una eternidad reconstruir eso ... así que, aunque esta publicación tiene 8 años, ¡espero que esto ayude a alguien!

arcademonkey
fuente
0

En el proyecto de Java, abra la carpeta .settings. allí ubique el archivo llamado "org.eclipse.wst.common.component". Cambie la etiqueta <wb-module deploy-name = "NEW_NAME">.

También es posible que desee cambiar la raíz de contexto en las propiedades del proyecto

usuario418836
fuente
todo eso se ve bien en mi proyecto y funciona bien dentro de eclipse. Es cuando convertirlo en un archivo de la guerra utilizando maven que pierde su contexto raíz y en lugar de localhost / eventos / se ejecuta en el servidor local /, que rompe todos mis enlaces
JesseBoyd
0

Si usa eclipse para implementar su aplicación. Podemos usar este complemento maven

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <wtpversion>2.0</wtpversion>
        <wtpContextName>newContextroot</wtpContextName>
    </configuration>
</plugin>

ahora vaya a la carpeta raíz de su proyecto y abra el indicador de cmd en esa ubicación, escriba este comando:

mvn eclipse: eclipse -Dwtpversion = 2.0

Es posible que deba reiniciar eclipse o, en la vista del servidor, eliminar el servidor y crear un nuevo para ver el efecto. Me pregunto si este ejercicio tiene sentido en la vida real, pero funciona.

supernova
fuente
0

Si utiliza la aplicación empresarial maven java ee 7/8, debe editar el pom.xml del proyecto EAR

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.sample</groupId>
                        <artifactId>ProjectName-web</artifactId>
                        <contextRoot>/myproject</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
John M
fuente