OpenShift Spring MVC Tomcat-Anwendung gibt den bereitgestellten Pfad 404 zurück

8

Ich verwende eine Tomcat7-Anwendung mit Spring MVC auf OpenShift unter der Domain financial-datasite.rhcloud.com . Ich starte und teste die Anwendung lokal mit einem Tomcat-Server und schiebe sie später an das Remote-Repository. Momentan gibt es nur eine HomePage und eine Schaltfläche darunter, die auf eine andere Seite umleitet. Beim lokalen Testen zeigen beide Seiten Inhalte wie erwartet an. Bei der Bereitstellung auf dem Remote-Server wird jedoch nur die HomePage angezeigt, und beim Klicken auf die Schaltfläche erhalte ich einen HTTP 404-Fehler. Ich bin auf verschiedene ähnliche Fragen gestoßen, aber keine von ihnen hat bisher geholfen. Ich habe herumgespielt, die web.xml, pom.xml, servlet-context.xml und die Controller-Dateien zu konfigurieren. Jedoch hat keiner von denen geholfen. Ich habe auch die Enddateien und Protokolle überprüft, um zu überwachen, was passiert, was darauf hindeutet, dass der Remote-Server auf eine "printWelcome" -Methode zugreift (welche existiert nicht einmal in meinem Projekt) in der Controller-Klasse für die zweite Seite:

%Vor%

Hier ist meine Projektstruktur . In meinem localhost wird die Standardseite als localhost:8181/mvc/ und die zweite Seite als http://localhost:8181/mvc/Sectors ausgeführt. Auf ähnliche Weise wird die Startseite nach der Bereitstellung als Ссылка und die zweite Seite als Ссылка , die einen 404-Fehler für /WEB-INF/views/hello.jsp auslöst, der wiederum nicht einmal in meinem Projektverzeichnis existiert. Eine andere Sache, die ich in den Protokolldateien beobachtete, ist, dass der Code wahrscheinlich nicht die SectorController-Klasse trifft, da ich für die Protokollierung von Druckbefehlen codiert habe, die nicht wirklich in die Konsole eingeloggt werden, wenn die Seite von der bereitgestellten Site angefordert wird. Ich bin mir nicht sicher, welche Dateien auf dem Remote-Server ausgeführt werden und ob es Konfigurationsprobleme gibt, die mir nicht bekannt sind. Im Folgenden finden Sie meine web.xml, pom.xml, servlet-context.xml, Sectors.jsp, Google-Maps.js, von wo ich die neue Seite aufgerufen habe, um sie zu laden) und SectorController.java (welches die Controller-Datei für die zweite Seite). Entschuldigung für eine längere Frage, bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Jede Hilfe wäre dankbar, danke.

web.xml

%Vor%

pom.xml

%Vor%

servlet-context.xml

%Vor%

Sectors.jsp

%Vor%

Google-Maps.js : Das folgende Snippet enthält nur die Funktion zum Erstellen eines div-Abschnitts auf der Karte und zum Aufrufen einer neuen Seite in einem neuen Fenster

%Vor%

SectorController.java

%Vor%     
Computer Scientist 26.04.2015, 18:09
quelle

1 Antwort

4
  1. Wie Jessai in einem Kommentar bemerkte,

    %Vor%

    Verwenden Sie Ihren Projektnamen nicht explizit! Es gibt eine Möglichkeit, Ihren Kontextnamen abzurufen, z. B. request.getContextPath () - Methode von HttpServletRequest.

    In diesem Fall mit einer hartcodierten URL-Zeichenfolge denke ich, dass Sie relative URL, nur 'Sektoren' oder './Sektoren' verwenden können.

    Referenzen:

  2. '__ blank': Du meintest '_blank'?

  3. Übrigens:

    Sie stellen auf Tomcat 7 bereit, sodass Sie die Einhaltung der Servlet 3.0-Spezifikation anstelle von 2.5 in Ihrer web.xml -Datei deklarieren können.

    Gehen Sie folgendermaßen vor, um das Scannen von Komponenten beim Start zu deaktivieren:
    Ссылка

  4. Ein

    %Vor%

    Wenn Ihre Klassendatei nicht mit Ihrem Quellcode übereinstimmt, bedeutet dies, dass Ihr Code nicht kompiliert wurde. Löschen Sie Ihre kompilierten Klassen (z. B. mvn clean ) und versuchen Sie es erneut.

    Wenn Sie neugierig sind, können Sie Ihre WAR-Datei mit jeder ZIP-Archivierungsanwendung entpacken und schauen, was tatsächlich da ist.

  5. Haben Sie oder unser Unternehmen den Domain-Namen der Website Ссылка ? Wenn nicht, verwenden Sie den Paketnamen com.spring NICHT und verwenden Sie nicht <groupId>com.spring</groupId> . Diese Namen gehören nicht dir. Sie sind das Eigentum eines anderen.

  6. Ein

    %Vor%

    Wenn Sie 3.x verwenden, warum nicht die aktuelle Version 3.2.12.RELEASE in 3.x oder besser die letzte Version 4.1.6.RELEASE? Spring Framework 3.1.x hat das Ende der Lebensdauer erreicht und wird nicht mehr unterstützt.

Konstantin Kolinko 04.05.2015 14:00
quelle

Tags und Links