Comment changer la racine de contexte d'un projet Web dynamique dans Eclipse?

205

J'ai développé un projet web dynamique dans Eclipse. Je peux accéder à l'application via mon navigateur en utilisant l'URL suivante:

http://localhost:8080/MyDynamicWebApp

Je souhaite remplacer l'URL d'accès par:

http://localhost:8080/app

Pour ce faire, j'ai modifié la racine de contexte du projet "Propriétés | Paramètres du projet Web | Racine de contexte". Cependant, l'application Web a toujours la même URL d'accès. J'ai redéployé l'application sur Tomcat et redémarré le Tomcat, mais l'URL d'accès est la même que précédemment.

J'ai trouvé qu'il n'y avait aucun server.xmlfichier joint au WARfichier. Sans le server.xmlfichier joint, comment le Tomcat détermine-t-il que la racine de contexte de mon application Web est /MyDynamicWebAppet me permet-il d'accéder à l'application via cette URL de racine de contexte?

Yatendra Goel
la source

Réponses:

331

Je suis sûr que vous avez avancé maintenant, mais je pensais que je répondrais de toute façon.

Certaines de ces réponses proposent des solutions de contournement. Ce qui doit réellement se produire, c'est que vous nettoyez et republiez votre projet pour «activer» le nouvel URI. Pour ce faire, cliquez avec le bouton droit sur votre serveur (dans la vue Serveurs) et choisissez Nettoyer. Ensuite, vous démarrez (ou redémarrez). La plupart des autres réponses ici suggèrent que vous fassiez des choses qui accomplissent effectivement cela.

Le fichier qui change est à workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datmoins que, c'est-à-dire que vous ayez plus d'un serveur dans votre espace de travail, auquel cas il sera publishN.datsur ce même chemin.

J'espère que cela aide quelqu'un.


Je ne sais pas si c'est une bonne étiquette ou non - je modifie cette réponse pour donner les étapes exactes pour Eclipse Indigo.

  1. Dans les propriétés de votre projet , choisissez Paramètres de projet Web .

  2. Remplacez la racine de contexte par l' application .

    capture d'écran des propriétés du projet Eclipse Paramètres du projet Web

  3. Choisissez Fenêtre> Afficher la vue> Serveurs .

  4. Arrêtez le serveur en cliquant sur la case du carré rouge (info-bulle "Arrêter le serveur") ou cliquez sur le contexte de la liste des serveurs pour choisir "Arrêter".

  5. Sur le serveur que vous souhaitez utiliser, cliquez sur le contexte pour choisir «Nettoyer…».

    entrez la description de l'image ici

  6. Cliquez sur OK dans cette boîte de dialogue de confirmation.

    Capture d'écran de la boîte de dialogue demandant de mettre à jour la configuration du serveur pour correspondre à la racine de contexte modifiée

Vous pouvez maintenant exécuter votre application avec la nouvelle URL "application" telle que:

http://localhost:8080/app/

Faire cela en dehors d'Eclipse, sur votre serveur de production, est encore plus facile -> Renommer le fichier war. Exportez votre application Vaadin en tant que fichier WAR ( Fichier> Exporter> Web> Fichier WAR ). Déplacez le fichier WAR vers le conteneur de servlet de votre serveur Web tel que Tomcat. Renommez votre fichier WAR, dans ce cas en app.war . Lorsque vous démarrez le conteneur de servlet, la plupart tels que Tomcat déploiera automatiquement l'application, ce qui inclut l'expansion du fichier war dans un dossier. Dans ce cas, nous devrions voir un dossier nommé app . Vous devriez être prêt à partir. Testez votre URL. Pour un domaine tel que * example.com ", ce serait:

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

Les programmeurs de la boîte à outils Vaadin peuvent avoir besoin de reconstruire leur ensemble de widgets s'ils utilisent des modules complémentaires visuels.

Russ Bateman
la source
Très bonne réponse !!! Vous me sauvez la vie ost des autres réponses ici suggèrent que vous fassiez des choses qui accomplissent effectivement cela
AndreaNobili
Voici le génie de cette réponse: je suis allé sur Google sur cette page et je n'ai même pas lu les balises (je crée un site Web ASP.NET à l'aide de Visual Studio). Mais la solution a quand même fonctionné!
Curt
Je n'ai pas un tel et l'option "Paramètres du projet Web"
IntoTheDeep
je dis juste que workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datc'est un fichier binaire, je ne comprends pas pourquoi vous le mentionnez là-haut, cela donne l'impression que c'est la solution au problème
aliopi
Mais que se passe-t-il si nous n'utilisons pas Eclipse .. ou tout autre IDE .. Je souhaite configurer par programme le chemin racine du contexte de servlet. Comment dois-je faire ça? dans web.xml probablement? ..
Giorgi Tsiklauri
32

Après avoir modifié la racine de contexte dans les propriétés du projet, vous devez supprimer votre application Web de Tomcat (en utilisant Ajouter et supprimer ... dans le menu contextuel du serveur), redéployer, puis rajouter votre application et redéployer. Ça a marché pour moi.

Si vous êtes frappé, vous avez un autre choix: sélectionnez le serveur Tomcat dans la vue Serveurs. Double-cliquer sur ce serveur (ou sélectionner Ouvrir dans le menu contextuel) amène un éditeur multipage où se trouve une page Modules. Ici, vous pouvez changer le contexte racine de votre module (appelé Chemin sur cette page).

Csaba_H
la source
Merci! Cela a fait l'affaire pour moi. cependant, il fonctionne même sans modifier la racine de contexte dans les propriétés du projet. Est-ce que j'ai râté quelque chose?
Chris
Cela fonctionnait également pour moi dans les versions précédentes d'Eclipse, mais dans la version actuelle (Luna), seule l'option Clean fonctionne désormais
Griknok
namasety, dhanywaada :) lorsque j'ai initialement changé mon contexte, cela n'a pas fonctionné même après le redémarrage et le nettoyage du serveur. cela ne fonctionnait que post, j'ai supprimé le projet et réajouté.
Yogesh Sanchihar
24

Si vous exécutez Tomcat depuis Eclipse, il n'utilise pas la configuration de votre installation Tomcat réelle. Il utilise la configuration Tomcat qu'il a créée et stockée sous le projet "Serveurs". Si vous affichez votre espace de travail Eclipse, vous devriez voir un projet appelé "Serveurs". Développez ce projet "Serveurs" et vous rencontrerez server.xml. Ouvrez ce fichier et faites défiler jusqu'en bas, et vous devriez voir quelque chose comme ceci: -

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

Ici, vous pouvez simplement changer le chemin du contexte de votre projet pour autre chose.

J'espère que cela t'aides.

limc
la source
Je ne suis pas sûr que vous souhaitiez modifier les 3 valeurs. La solution de Csaba_H a fonctionné pour moi et cela ne change que l'attribut "path" ...
Chris
Celui-ci n'a pas fonctionné pour moi - les fichiers de ce répertoire sont remplacés lorsque vous redémarrez le serveur. La version deux de Csaba_H, l'onglet Modules sous Tomcat Server, semble être la "bonne" approche.
idarwin
17

J'ai essayé la solution suggérée par Russ Bateman ici dans le post

http://localhost:8080/Myapp à http://localhost:8080/somepath/Myapp

Mais n'a pas fonctionné pour moi car j'avais besoin d'un fichier * .war pouvant contenir la configuration et non l'instance individuelle du serveur sur ma machine locale.

Référence

Pour ce faire, j'ai besoin que jboss-web.xml soit placé dans 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
la source
Cela a fonctionné pour moi. Environnement = Eclipse + m2e + m2e-wtp + déploiement sur JBoss depuis la vue Serveurs. Nécessaire pour déployer le projet Web principal en tant que ROOT et aucun paramètre Eclipse n'a fait l'affaire. J'ai copié le fichier de Tosha (ci-dessus) et place "ROOT" sans guillemets comme valeur contextuelle. Fait et fait. Merci, @Tosha!
Steven Francolla
Cela fonctionne, mais je me demande pourquoi il ignore le paramètre dans les propriétés du projet?
Vedran
4
Fonctionne avec JBoss WildFly 8.1.0 Final
alexander
J'ai migré de MyEclipse 8.6 vers Eclipse et je n'ai pas pu déployer avec le contexte racine '/'. L'ajout de jboss-web.xml a réussi. serveur: Jboss AS 5.1 Eclipse Luna.
Sai
9

Définir le chemin sur rien dans la boîte de dialogue d'édition des modules Web Eclipse m'a permis d'accéder au projet sans aucun composant de chemin dans l'URL (c'est-à-dire ROOT)

Vous pouvez accéder à la boîte de dialogue d'édition des modules Web en appuyant sur F3 si vous sélectionnez Tomcat dans la vue "Serveurs" ou en double-cliquant dessus.

Quelques captures d'écran:

Ray Hulha
la source
Désolé mais pouvez-vous donner plus de détails à ce sujet?
smonff du
Oh merci! Sur Eclipse Luna sous GNU / Linux, un /est cependant requis.
smonff
1
J'ai utilisé Eclipse Mars (4.5) sur Win7.
Ray Hulha
6

Apache tomcat conserve le chemin du contexte du projet dans le chemin server.xml. Pour chaque projet Web sur Eclipse, il y a une balise à partir de là, vous pouvez la changer.
Supposons que deux ou trois projets soient déployés sur le serveur. Pour chacun, un chemin de contexte est stocké dans. Cette balise se trouve dans le fichier server.xml du serveur créé sur eclipse.

J'ai un projet sur le chemin racine du contexte sur le serveur:

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

Ce chemin représente le chemin du contexte de votre application Web. En modifiant ce chemin, le chemin du contexte de votre application Web changera.

Amar Poddar
la source
6

Je sais que la réponse a déjà été acceptée. Mais, juste au cas où quelqu'un utilisant Maven voudrait réaliser la même chose, définissez simplement final dans la construction maven sur le nom que vous souhaitez donner et de faire un projet maven -> update

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

Si le projet est maven, modifiez le "finalName" dans pom.xml et mettez à jour le projet en tant que Maven. Cela a fonctionné pour moi.

Sudarshani Perera
la source
2

Dans Glassfish, vous devez également modifier le fichier WEB-INF / glassfish-web.xml

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

Ainsi, lorsque vous cliquez sur "Exécuter en tant que> Exécuter sur le serveur", il s'ouvrira correctement.

Alan Weiss
la source
Oui, nous devons. Bon partage.
Dinath
2

Je voulais juste ajouter que si vous ne voulez pas du tout le nom de votre application dans le contexte racine, vous et mettez simplement "/" (pas de guillemets, juste la barre oblique) dans Eclipse -> Paramètres du projet Web -> Entrée racine de contexte

Cela déploiera la webapp sur seulement http: // localhost: 8080 /

Bien sûr, cela entraînera des problèmes avec les autres applications Web que vous essayez d'exécuter sur le serveur, alors prenez-en garde.

Cela m'a pris une éternité à reconstituer cela ensemble ... donc même si ce message a 8 ans, j'espère que cela aidera toujours quelqu'un!

arcademonkey
la source
0

Dans le projet java, ouvrez le dossier .settings. recherchez le fichier nommé "org.eclipse.wst.common.component". Modifiez la balise <wb-module deploy-name = "NEW_NAME">.

Vous pouvez également modifier la racine de contexte dans les propriétés du projet

user418836
la source
tout ce qui semble bon sur mon projet et il fonctionne très bien dans éclipse. c'est quand je le convertis en un fichier war en utilisant maven qu'il perd son contexte racine et au lieu de localhost / events / il tourne sur localhost / qui casse tous mes liens
JesseBoyd
0

Si vous utilisez eclipse pour déployer votre application. Nous pouvons utiliser ce plugin 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>

allez maintenant dans le dossier racine de votre projet et ouvrez l'invite cmd à cet emplacement, tapez cette commande:

éclipse mvn: éclipse -Dwtpversion = 2.0

Vous devrez peut-être redémarrer Eclipse, ou dans la vue du serveur, supprimez le serveur et créez Agian pour voir l'effet. Je me demande si cet exercice a du sens dans la vraie vie mais fonctionne.

supernova
la source
0

Si vous utilisez l'application d'entreprise maven java ee 7/8, vous devez modifier le pom.xml du projet 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
la source