2010-03-13 89 views
182

He desarrollado un proyecto web dinámico en Eclipse. Ahora puedo acceder a él a través de mi navegador usando la siguiente URL:¿Cómo cambiar la raíz de contexto de un proyecto web dinámico en Eclipse?

http://localhost:8080/MyDynamicWebApp 

ahora quieren cambiar la URL de acceso a

http://localhost:8080/app 

He cambiado la raíz de contexto del proyecto "Propiedades | Configuración del proyecto Web | Roza del contexto ".

Pero no está funcionando. La aplicación web todavía tiene la URL de acceso como antes. He vuelto a implementar la aplicación en Tomcat, reinicié Tomcat y he hecho todo lo que debería hacerse, pero la URL de acceso es la misma que antes.

Encontré que no había ningún archivo server.xml adjunto con el archivo WAR. Entonces, ¿cómo Tomcat está determinando que la raíz de contexto de mi aplicación web es /MyDynamicWebApp y me permite acceder a la aplicación a través de esa URL?

Respuesta

292

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

Algunas de estas respuestas ofrecen 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 hagas cosas que, de hecho, logren esto.

El archivo que está cambiando es espacio de trabajo/.metadata/.plugins/org.eclipse.wst.server.core/publicar/publish.dat menos, es decir, usted tiene más de un servidor en su espacio de trabajo en cuyo caso será publishN.dat en esa misma ruta.

Espero que esto ayude a alguien.


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

  1. En las propiedades de su proyecto, seleccione "Configuración de proyecto web".

  2. Cambie "Context root" a "app".

    screen shot of Eclipse project properties Web Project Settings

  3. Elija Ventana> Mostrar vista> Servidores.

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

  5. En el servidor que desea utilizar, haga clic con el botón derecho para elegir "Limpiar ...".

    enter image description here

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

    Screenshot of dialog asking to update server configuration to match the changed context root

Ahora se puede ejecutar su aplicación con el nuevo URL "aplicación", tales como:

http://localhost:8080/app/

Hacer esto fuera de Eclipse, en su producción servidor, es aún más fácil -> Renombrar el archivo war. Exporte su aplicación Vaadin como un archivo WAR (archivo> Exportar> Web> archivo WAR). Mueva el archivo WAR al contenedor de servlets de su servidor web, como Tomcat. Cambie el nombre de su archivo WAR, en este caso a "app.war". Cuando inicie el contenedor de servlets, la mayoría, como Tomcat, implementará automáticamente la aplicación, 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: los programadores del juego de herramientas

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

vaadin pueden tener que reconstruir su conjunto de widgets si se utiliza añadir complementos visuales.

+0

¡¡¡Gran respuesta !!! Me salvas la vida La mayoría de las otras respuestas aquí sugieren que hagas cosas que en efecto lo lleven a cabo – AndreaNobili

+0

Aquí está el genio de esta respuesta: busqué en Google mi camino a esta página, y ni siquiera leí las etiquetas (estoy construyendo una ASP. NET sitio web utilizando Visual Studio). ¡Pero la solución funcionó de todos modos! – Curt

+0

No tengo tal opción y la opción "Configuración de proyecto web" – TeodorKolev

28

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 desplegar, luego volver a agregar su aplicación y volver a desplegar. Funcionó para mí

Si recibe un golpe, tiene otra opción: seleccione el servidor Tomcat en la vista Servidores. Hacer doble clic en ese servidor (o seleccionar Abrir en el menú contextual) trae 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).

+0

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

+0

Esto también solía funcionar en versiones anteriores de Eclipse, pero en la compilación actual (Luna), solo la opción Limpiar ahora funciona – Griknok

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". Expande ese proyecto de "Servidores" y te encontrarás con server.xml. Abrir este archivo y desplazarse todo el camino hasta el fondo, y usted debería ver algo como esto: -

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

Aquí, sólo puede cambiar su ruta de contexto del proyecto a otra cosa.

Espero que esto ayude.

+0

. No estoy seguro de que desee cambiar los 3 valores. La solución de Csaba_H funcionó para mí y eso solo cambia el atributo "ruta" ... – Chris

+0

Éste no me funcionó: los archivos en ese directorio se sobrescriben cuando reinicias el servidor.La versión dos de Csaba_H, la pestaña Módulos debajo del Servidor Tomcat, parece ser el enfoque "correcto". – idarwin

0

En el proyecto de Java, abra la carpeta .settings. allí ubique el archivo llamado "org.eclipse.wst.common.component". Cambiar 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

+0

todo lo que se ve bien en mi proyecto y se ejecuta dentro de eclipse muy bien. es cuando lo convierto en un archivo war usando maven que pierde su contexto raíz y en lugar de localhost/events/se ejecuta en localhost/que rompe todos mis enlaces – JesseBoyd

6

Apache Tomcat mantiene la ruta de contexto del proyecto en camino server.xml. Para cada proyecto web en Eclipse, hay una etiqueta desde donde puedes cambiarlo.
Supongamos que hay dos o tres proyectos implementados en el servidor. Para cada una de las rutas de contexto se almacena en. Esta etiqueta se encuentra en el archivo server.xml dentro del Servidor creado en eclipse.

que tienen un proyecto de allí en ruta raíz contexto en el servidor es:

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

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

17

probé solución sugerida por Russ Bateman Aquí en el puesto

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

Pero Didnt trabajado para mí, ya que es necesario tener un archivo * .war que puede almacenar la configuración y no el instancia individual de servidor en mi máquina local.

Reference

Para hacerlo 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> 
+0

Esto funcionó para mí. Entorno = Eclipse + m2e + m2e-wtp + implementación en la vista JBoss desde servidores. Necesario para 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! –

+0

Esto funciona, pero me pregunto por qué ignora la configuración en las propiedades del proyecto? – Vedran

+4

Funciona con JBoss WildFly 8.1.0 Final – alexander

1

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

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

Así que cuando se hace clic en "Ejecutar como> Ejecutar en el servidor" se abrirá correctamente.

5

Sé que la respuesta ya ha sido aceptada. Pero, por si alguien caso utilizando Maven quiere lograr lo mismo, acaba de establecer la finalName en el experto acumulación a cualquier nombre que desea dar y hacer un experto -> proyecto de actualización

<build> 
    <finalName><any-name></finalName> 
    <plugins><provide-plugins-needed></plugins> 
<build> 
5

Ajuste el camino a la nada en el 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 cuadro de diálogo de edición de módulos web presionando F3 si selecciona Tomcat en el " Servidores "ver o haciendo doble clic en él.

Algunas capturas de pantalla:

+0

Disculpa, pero ¿puedes dar más detalles sobre esto? – smonff

+1

Claro que edité la respuesta original. –

+0

¡oh, gracias! Sin embargo, en Eclipse Luna en GNU/Linux, se requiere '/'. – smonff

3

Si el proyecto es experto, cambiar el "finalName" en pom.xml y proyecto de actualización como Maven.This trabajó para mí.

0

Si usa eclipse para implementar su aplicación. Podemos utilizar este plugin de 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 ir a la carpeta raíz del proyecto y abrir cmd en ese lugar tipo este comando:

mvn eclipse: eclipse de -Dwtpversion = 2,0

Usted puede necesita reiniciar eclipse, o en servidor ver eliminar servidor y crear un agian para ver afecto. Me pregunto si este ejercicio tiene sentido en la vida real, pero funciona.

Cuestiones relacionadas