Plusieurs contextes avec la même erreur de chemin exécutant le service Web dans Eclipse à l'aide de Tomcat

130

C'est l'erreur que j'ai eue lorsque j'ai créé mon premier service Web Axis2 à l'aide d'Eclipse. Après avoir écrit le cours, j'ai créé le service Web avec Apache Axis2. Lorsque je clique sur le bouton de démarrage du serveur dans eclipse, cela donne un message d'erreur:

Impossible de publier la configuration du serveur pour le serveur Tomcat v6.0 sur l'hôte local.
Plusieurs contextes ont un chemin "/ FirstApache".

FirstApache est le projet Web dynamique que j'ai créé auparavant. J'ai sélectionné le projet Web correct dans la partie configuration de l'assistant de service Web.

Comment puis-je réparer cela?

kkk
la source

Réponses:

276

Recherchez le server.xmlfichier et vérifiez vos <Context>balises, il existe probablement plusieurs définitions pour le même chemin. Supprimez les doublons et cela devrait fonctionner pour vous.

Découvrez la réponse ici .

Formatez automatiquement le fichier xml ( control+ shift+ f) car la deuxième <Context>balise peut être sur la même ligne, mais en dehors de la fenêtre et très loin de la balise visible.

Alex Ciminian
la source
13
Vous pouvez trouver le fichier server.xml dans l'espace de travail \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ conf (changez tmp0 au cas où ce ne serait pas votre serveur par défaut eclipse)
Repoker
J'ai eu ce problème après avoir créé une copie d'un projet Web dynamique dans eclipse java ee et essayé d'exécuter les JSP dans la copie à la place. Comment résoudre ce problème?
Erran Morad
Doit être protégé pour éviter d'autres «merci» inutiles. Un vote positif pour la réponse vaut mieux qu'un commentaire de remerciement.
Dwhitz
Merci, cela fonctionne, mais je ne comprends pas pourquoi cette duplication se produit?
Sandip S.
Cette solution fonctionne toujours, j'utilise Tomcat 8.5 sur Eclipse V2018-12
Raymund Arthur
70

Dans STS / Eclipse, allez dans «explorateur de projet» ou «explorateur de package» et il y a un dossier appelé «serveur». Ouvrez-le et vous trouverez le server.xmlfichier. Dans ce fichier en bas, vous trouvez une définition comme

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

Vous pouvez trouver des doublons de la même définition que vous devrez supprimer.

Daniel Adenew
la source
1
Ajout de la suppression des serveurs ajoutée, cette ligne une fois de plus automatiquement
Vinayak Shedgeri
Si l'application ne démarre pas même après cela, allez dans l'onglet "Serveurs" à côté de Console et supprimez tous les modules situés dans la liste déroulante du nom du serveur. Relancez le projet après cela
Sameer Sinha
41

Dans Eclipse, accédez au projet Serveurs . Ouvrez l'arborescence de la version Tomcat que vous utilisez. Ouvrez le fichier server.xml et vérifiez vos balises de contexte.

Angie Echevarria
la source
28

Dans votre EDI eclipse sur l'explorateur de projets, accédez au server.xml comme dans:

entrez la description de l'image ici

Et supprimez les balises de contexte avec des références en double pour votre projet:

entrez la description de l'image ici

Fernando Gomes
la source
16

Accédez à server.xmlet recherchez une "Context"balise avec un nom de propriété "docBase".

Supprimez les lignes en double ici. Essayez ensuite de redémarrer le serveur.

Sireesh Yarlagadda
la source
12

Accédez au projet Servers dans eclipse, sous la configuration de votre serveur d'exécution (dans mon cas, Tomcat v7.0 Server à localhost-config), accédez au fichier server.xml puis recherchez la balise <context>, normalement vous trouverez plus d'une balise de contexte , supprimez-les et exécutez votre application sur le serveur approprié qui fonctionnera maintenant.

dans mon cas, j'ai trouvé une balise de contexte en double:

<Context docBase="my-project" path="/my-project" reloadable="true" source="org.eclipse.jst.jee.server:my-project"/&gt;&lt;Context docBase="my-project" path="/smartphone-selfcare" reloadable="true" source="org.eclipse.jst.jee.server:my-project"/></Host>
sofiene zaghdoudi
la source
10

Dans eclipse en utilisant tomcat, il vous suffit d'ouvrir ce fichier server.xml et de trouver la balise de contexte et ici vous voyez que votre nom de contexte est plus que celui que vous supprimez simplement les contextes inutiles et redémarrez votre serveur, cela fonctionnera ....

entrez la description de l'image ici

Zeeshan Akhter
la source
5
  1. Dans les propriétés de votre projet, choisissez "Paramètres du projet Web".
  2. Changez "Racine de contexte".
  3. Nettoyez votre serveur
  4. maintenant vous pouvez redémarrer votre serveur
Fakher
la source
Excellente solution pour les développeurs utilisant plus d'une instance de la même application à différents endroits sur leurs postes de travail. J'ai constaté que toutes les installations d'Eclipse / Tomcat n'ont pas de balise <Context> dans leur fichier server.xml.
Mindsect Team
5

Eclipse >> explorateur de projet >> serveurs >> server.xml >> tag >> supprimer la balise dupliquée de votre projet

Debika Sadhukhan
la source
3

Supprimez simplement le serveur dans Eclipse et ajoutez à nouveau le serveur tomcat. que d'arrêter le tomcat dans le fichier tomcat / bin / shutdown.bat et de démarrer le serveur dans eclipse.

Phénix
la source
2

Essayez de supprimer le serveur tomcat existant dans la console du serveur. Si vous n'avez pas la console, vous pouvez aller dans "Afficher la vue -> serveur", supprimer le serveur en faisant un clic droit dessus, puis ajouter un nouveau serveur.

chethan bhounsley g
la source
2

Si vous utilisez Tomcat 7 et Eclipse, cliquez sur le serveur Tomcat puis allez dans l'onglet modules. Vous y trouverez l'entrée dupliquée. Supprimez à la fois l'entrée et redéployez l'application. Vous êtes prêt à partir maintenant.

SamDJava
la source
2

Dans le même ordre d'idées, si vous avez copié un projet ou en tout cas, avez le même chemin de contexte pour 2 projets `` actifs '', vous devez changer le chemin de contexte de l'un d'entre eux, puis nettoyer les paramètres du serveur tomcat, puis republier les serveurs

voir cette réponse plus détaillée

pingouin
la source
1

J'ai eu ce problème avant. Je viens de le résoudre en développant l'arborescence tomcat et en supprimant le dossier à l'origine du conflit. dans votre cas est /FirstApache. après l'avoir supprimé. puis vous le relancez, vous devriez pouvoir l'exécuter. Si cela se reproduit, supprimez-le et réessayez.

aPEARR
la source
0

Supprimez l'espace ou la ligne vide dans server.xml ou context.xml au début de votre code

DHARMA RAJU
la source
0

Dans mon cas, j'ai trouvé des chemins en double dans Servers / Tomcat5.5 à localhost-config / server.xml sous la balise. La suppression des doublons a résolu le problème.

MoneeK
la source
0

Supprimez org.eclipse.wst.server.core et org.eclipse.wst.server.ui de .metadata / .plugins de wrokspace

supprimez le serveur d'eclipse puis reconfigurez le serveur dans eclipse.

Vivek Kamble
la source
0

Cette erreur se produit lorsque vous copiez un projet plutôt que de le coller, puis que vous modifiez le nom de ce projet.

dans un tel cas, suivez les étapes suivantes.

Étape 1: vous devez éditer votre fichier web.xml. supprimer le servlet et le mappage de servlet des projets précédents.

Étape 2: accédez à SERVER -> server.xml -> find context

Exemple: - Contexte docBase = "JSPandServletDemo" path = "/ JSPandServletDemo" reloadable = "true" source = "org.eclipse.jst.jee.server: JSPandServletDemo" />

il vous suffit maintenant de remplacer le chemin par le nom actuel de votre projet.

Bonne chance codage heureux :)

Akib Sayyed
la source
-1

Si vous utilisez STS et que votre serveur est Pivotal Double-cliquez simplement sur le serveur et allez dans> onglet Modules> affichage Configurer les modules Web sur ce serveur.> Vous pouvez simplement supprimer les modules et les relancer.

Ganesh Giri
la source
-1
 //Trying to do more than one thing to the object in the same context, 
//the solution is to work on single context objects

public class SingletonContext<TContext>
    where TContext: DbContext,new()
{
    private static TContext _context;

    private SingletonContext()
    {

    }
    public static TContext GetInstance()
    {
        if (_context == null)
        {
            _context = new TContext();
        }
        return _context;
    }

}
Tugay ÜNER
la source