Mehrere Kontexte mit demselben Pfadfehler beim Ausführen des Webdienstes in Eclipse mit Tomcat

128

Dies ist der Fehler, den ich beim Erstellen meines ersten Axis2-Webdienstes mit Eclipse erhalten habe. Nachdem ich die Klasse geschrieben habe, habe ich den Webdienst mit Apache Axis2 erstellt. Wenn ich in Eclipse auf die Schaltfläche Server starten klicke, wird eine Fehlermeldung angezeigt:

Die Serverkonfiguration für Tomcat v6.0 Server konnte nicht auf localhost veröffentlicht werden.
Mehrere Kontexte haben den Pfad "/ FirstApache".

FirstApache ist das dynamische Webprojekt, das ich zuvor erstellt habe. Ich habe das richtige Webprojekt aus dem Konfigurationsteil des Webdienst-Assistenten ausgewählt.

Wie kann ich das beheben?

kkk
quelle

Antworten:

276

Suchen Sie nach der server.xmlDatei und überprüfen Sie Ihre <Context>Tags. Wahrscheinlich gibt es mehrere Definitionen für denselben Pfad. Entfernen Sie die Duplikate und es sollte für Sie funktionieren.

Überprüfen Sie die Antwort hier .

Formatieren Sie die XML-Datei automatisch ( control+ shift+ f), da sich das zweite <Context>Tag möglicherweise in derselben Zeile befindet, jedoch außerhalb des Ansichtsfensters und sehr weit von der sichtbaren entfernt.

Alex Ciminian
quelle
13
Sie finden die Datei server.xml im Arbeitsbereich \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ conf (ändern Sie tmp0, falls dies nicht Ihr Eclipse-Standardserver ist)
Repoker
Ich habe dieses Problem erhalten, nachdem ich eine Kopie eines dynamischen Webprojekts in Eclipse Java EE erstellt und stattdessen versucht habe, die JSPs in der Kopie auszuführen. Wie behebe ich dieses Problem?
Erran Morad
Sollte geschützt werden, um andere nutzlose "Dankeschöns" zu vermeiden. Eine Abstimmung über die Antwort ist besser als ein Dankeskommentar.
Dwhitz
Danke, es funktioniert, aber ich bin verwirrt, warum diese Verdoppelung auftritt?
Sandip S.
Diese Lösung funktioniert immer noch, ich verwende Tomcat 8.5 auf Eclipse V2018-12
Raymund Arthur
70

Gehen Sie in STS / Eclipse zu "Projektexplorer" oder "Paketexplorer" und es gibt einen Ordner namens "Server". Öffnen Sie es und Sie finden eine server.xmlDatei. In dieser Datei unten finden Sie eine Definition wie

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

Möglicherweise finden Sie Duplikate derselben Definition, die Sie entfernen müssten.

Daniel Adenew
quelle
1
Hinzufügen von Löschungen von Servern hinzugefügt, diese Zeile noch einmal automatisch
Vinayak Shedgeri
Wenn die App auch danach nicht gestartet wird, wechseln Sie zur Registerkarte "Server" neben "Konsole" und entfernen Sie alle Module, die sich in der Dropdown-Liste "Servername" befinden. Führen Sie das Projekt danach erneut aus
Sameer Sinha
40

Wechseln Sie in Eclipse zum Server- Projekt. Öffnen Sie den Baum für die von Ihnen verwendete Tomcat-Version. Öffnen Sie die Datei server.xml und überprüfen Sie Ihre Context-Tags.

Angie Echevarria
quelle
28

In Ihrer Eclipse-IDE im Projektexplorer greifen Sie auf die Datei server.xml zu, wie in:

Geben Sie hier die Bildbeschreibung ein

Entfernen Sie Kontext-Tags mit doppelten Referenzen für Ihr Projekt:

Geben Sie hier die Bildbeschreibung ein

Fernando Gomes
quelle
15

Gehen Sie zu server.xmlund suchen Sie nach einem "Context"Tag mit einem Eigenschaftsnamen "docBase".

Entfernen Sie hier die doppelten Zeilen. Versuchen Sie dann, den Server neu zu starten.

Sireesh Yarlagadda
quelle
12

Gehen Sie in Eclipse zum Serverprojekt. Gehen Sie unter Ihrer Laufzeitserverkonfiguration (in meinem Fall Tomcat v7.0 Server bei localhost-config) zur Datei server.xml und suchen Sie nach dem Tag <context>. Normalerweise finden Sie mehr als ein Kontext-Tag Löschen Sie sie und führen Sie Ihre Anwendung auf dem entsprechenden Server aus, der jetzt funktioniert.

In meinem Fall habe ich ein doppeltes Context-Tag gefunden:

<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
quelle
10

In Eclipse mit Tomcat öffnen Sie einfach diese server.xml-Datei und suchen das Context-Tag. Hier sehen Sie, dass Ihr Kontextname mehr ist als einer. Sie löschen einfach nutzlose Kontexte und starten Ihren Server neu. Es wird funktionieren.

Geben Sie hier die Bildbeschreibung ein

Zeeshan Akhter
quelle
5
  1. Wählen Sie in den Eigenschaften Ihres Projekts "Webprojekteinstellungen".
  2. Ändern Sie "Kontextstamm".
  3. Reinigen Sie Ihren Server
  4. Jetzt können Sie Ihren Server neu starten
Fakher
quelle
Hervorragende Lösung für Entwickler, die mehr als eine Instanz derselben Anwendung an verschiedenen Standorten auf ihren Workstations verwenden. Ich habe festgestellt, dass nicht alle Installationen von Eclipse / Tomcat ein <Context> -Tag in der Datei server.xml haben.
Mindsect Team
5

Eclipse >> Projektexplorer >> Server >> server.xml >> Tag >> Entfernen Sie doppelte Tags Ihres Projekts

debika sadhukhan
quelle
3

Entfernen Sie einfach den Server in Eclipse und fügen Sie den Tomcat-Server erneut hinzu. Fahren Sie dann den Tomcat in der Datei tomcat / bin / shutdown.bat herunter und starten Sie den Server in Eclipse.

Phönix
quelle
2

Versuchen Sie, den vorhandenen Tomcat-Server in der Serverkonsole zu löschen. Wenn Sie die Konsole nicht haben, können Sie zu "Ansicht anzeigen -> Server" gehen, den Server löschen, indem Sie mit der rechten Maustaste darauf klicken, und dann einen neuen Server hinzufügen.

chethan bhounsley g
quelle
2

Wenn Sie Tomcat 7 und Eclipse verwenden, klicken Sie auf den Tomcat-Server und wechseln Sie zur Registerkarte Module. Dort finden Sie den doppelten Eintrag. Entfernen Sie den Eintrag und stellen Sie die Anwendung erneut bereit. Du bist jetzt gut zu gehen.

SamDJava
quelle
2

Wenn Sie ein Projekt kopiert haben oder in jedem Fall denselben Kontextpfad für zwei "aktive" Projekte haben, müssen Sie den Kontextpfad eines dieser Projekte ändern, die Tomcat-Servereinstellungen bereinigen und die Server erneut veröffentlichen

siehe diese ausführlichere Antwort

Pinguinquelle
quelle
1

Ich hatte dieses Problem schon einmal. Ich habe es gerade gelöst, indem ich den Tomcat-Baum erweitert und den Ordner gelöscht habe, der den Konflikt verursacht. in deinem Fall ist /FirstApache. nachdem Sie es gelöscht haben. Wenn Sie es dann erneut ausführen, sollten Sie in der Lage sein, auszuführen. Wenn es erneut passiert, löschen Sie es und versuchen Sie es erneut.

aPEARR
quelle
0

Entfernen Sie das Leerzeichen oder die Leerzeile in server.xml oder context.xml am Anfang Ihres Codes

DHARMA RAJU
quelle
0

In meinem Fall habe ich doppelte Server in Servers / Tomcat5.5 unter localhost-config / server.xml unter tag gefunden. Das Entfernen der Duplikate löste das Problem.

MoneeK
quelle
0

Löschen Sie org.eclipse.wst.server.core und org.eclipse.wst.server.ui aus .metadata / .plugins von wrokspace

Löschen Sie den Server aus Eclipse und konfigurieren Sie den Server in Eclipse neu.

Vivek Kamble
quelle
0

Dieser Fehler tritt auf, wenn Sie ein Projekt kopieren als es hinter sich lassen und dann den Namen dieses Projekts ändern.

Befolgen Sie in diesem Fall die folgenden Schritte.

Schritt 1: Sie müssen Ihre Datei web.xml bearbeiten. Entfernen Sie das Servlet und die Servlet-Zuordnung der vorherigen Projekte.

Schritt 2: Gehen Sie zu SERVER -> server.xml -> Kontext finden

Beispiel: - Kontext docBase = "JSPandServletDemo" path = "/ JSPandServletDemo" = "true" source = "org.eclipse.jst.jee.server: JSPandServletDemo" />

Jetzt müssen Sie nur noch den Pfadnamen in Ihren aktuellen Projektnamen ändern.

Viel Glück Happy Coding :)

Akib Sayyed
quelle
-1

Wenn Sie STS verwenden und Ihr Server Pivotal ist, doppelklicken Sie einfach auf den Server und gehen Sie zu> Registerkarte Module> Anzeige Konfigurieren Sie die Webmodule auf diesem Server.> Sie können einfach Module entfernen und erneut ausführen.

Ganesh Giri
quelle
-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
quelle