web-dev-qa-db-de.com

Der Origin-Server hat keine aktuelle Darstellung für die Zielressource gefunden oder ist nicht bereit, die vorhandene Ressource anzugeben. bei der Bereitstellung auf Tomcat

Ich habe eine Anwendung erstellt, die Spring mit Eclipse IDE verwendet. Wenn ich das Projekt von Eclipse IDE aus starte, ist alles in Ordnung, aber wenn ich das Maven-Projekt als Kriegsdatei packe und für die Trennung von Tomcat einsetzte, habe ich dieses Problem

The Origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Dies ist ein Konfigurationsausschnitt aus meiner XML-Datei

<!-- View Resolver -->
    <beans:bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/pages/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

Ich versuche, auf diesen Controller zuzugreifen 

@RequestMapping(value = {"/welcome", "/"})
    public String defaultPage() {
            return "Web Service data successfuly consumed";


    }

wer hat eine Idee, warum dies auf Tomcat nicht funktioniert?

11
Blaze

Ich habe viele Male mit diesem Problem zu kämpfen.

Die Lösung, die ich derzeit verwende, ist, ob die Webapp (oder der Ordner, in dem Sie die Ansichten wie "Jsp" gespeichert haben) sich im Bereitstellungsassembly befindet.

Dazu Right click on the project > Build Path > Configure Build path > Deployment Assembly > Add(right hand side) > Folder > (add your jsp Ordner. In der Standardeinstellung ist dies src/main/webapp)

Sie könnten diese Fehlermeldung auch erhalten, wenn Sie alles richtig gemacht haben, aber auf der JSP setzen Sie den Anker-Tag auf die alte Art und Weise (ich füge diesen Fall hinzu, wenn andere mit demselben Problem geholfen werden). 

Ich hatte die folgende Syntax in der JSP. <a href="/mappedpath">TakeMeToTheController</a> und ich sah den in der Frage erwähnten Fehler ständig. Durch das Ändern des Tags in das unten gezeigte wurde das Problem jedoch behoben.

<a href=" <spring:url value="/mappedpath" /> ">TakeMeToTheController</a>
7
tadtab

Ich habe die gleiche Fehlermeldung erhalten, wenn ich in einer Spring Boot-Anwendung arbeite, da localhost:8080/hello/World einfach als Spring Boot ausgeführt wird. Wenn Sie jedoch das Artefakt erstellt und in Tomcat bereitgestellt haben, müssen Sie zu localhost:8080/<artifactName>/hello/World

5
Ryan D

Wenn Sie eine Spring Boot-Anwendung entwickeln, fügen Sie Ihrer Hauptdatei "SpringBootServletInitializer" wie im folgenden Code gezeigt hinzu. Da Tomcat es ohne SpringBootServletInitializer als normale Anwendung betrachtet, wird es nicht als Spring-Boot-Anwendung betrachtet

@SpringBootApplication
public class DemoApplication extends *SpringBootServletInitializer*{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
         return application.sources(DemoApplication .class);
    }

    public static void main(String[] args) {
         SpringApplication.run(DemoApplication .class, args);
    }
}
3

Ich hatte das gleiche Problem und mit einem Hinweis auf die Antwort von @tadtab konnte ich eine Lösung für das gleiche Problem in meinem Projekt finden.

Schritte:

1-> Befolgen Sie die in den Antworten von @ tadtab genannten Schritte.

2-> Klicken Sie mit der rechten Maustaste auf das Projekt-> Klicken Sie auf Eigenschaften-> Nach Bereitstellungsassembly suchen.

3-> Suchen Sie, ob Ihr Ordner auf dem Bildschirm vorhanden ist. (Wenn nicht, fügen Sie es hinzu).

4-> Auf dem Bildschirm finden Sie eine Spalte 'Bereitstellungspfad', die Ihrem Quellordner entspricht. Kopieren Sie diesen Pfad. In meinem Fall war es/views.

enter image description here 5-> Im Grunde genommen sollten wir in der setPrefix () -Methode den Pfad zum Zeitpunkt der Bereitstellung haben. Früher habe ich nur/views in der setPrefix () -Methode verwendet, daher wurde derselbe Fehler angezeigt. Aber danach hat es gut funktioniert.

@Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();

        resolver.setPrefix("/WEB-INF/classes/");
        resolver.setSuffix(".jsp");

        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;

    }

Dasselbe sollte auch für die XML-Konfiguration gelten.

0
Golu

Dieses Problem kann sogar auftreten, wenn Sie versuchen, Ihr Projekt von der Controllerseite aus auszuführen. Führen Sie Ihr Projekt über die JSP-Seite aus. Gehen Sie zu Ihrer JSP-Seite. Rechtsklick-> Ausführen als-> Auf Server ausführen. Ich hatte das gleiche Problem. Ich habe mein Projekt auf der Controllerseite ausgeführt. Führen Sie Ihr Projekt von der JSP-Seite aus.

0
Smitha

Ihr Dispatcher-Servlet kann die Anfrage nicht versenden. Das Problem ist, dass Ihre Controller-Bean nicht erstellt wurde/funktioniert.

Sogar ich hatte das gleiche Problem. Fügen Sie dann unter mvc-config.xml Folgendes hinzu

<mvc:annotation-driven/>
<context:component-scan base-package="com.nsv.jsmbaba.teamapp.controller"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix"><value>/WEB-INF/view/</value></property>
    <property name="suffix"><value>.jsp</value></property>
</bean>

Hoffe das hilft

0
Nagaraj

Fast das gleiche Problem wird durch Erstellen einer geoexplorer.xml-Datei in /opt/Apache-Tomcat-8.5.37/conf/Catalina/localhost Gelöst 

<Context displayName="geoexplorer" docBase="/usr/share/opengeo/geoexplorer" path="/geoexplorer"/>
0
Rakeshwar Verma

Beim Versuch, ein Servlet in Eclipse auszuführen (Rechtsklick + "Auf Server ausführen"), trat das gleiche Problem auf: "HTTP-Status: 404/Beschreibung: Der Origin-Server hat keine aktuelle Darstellung für die Zielressource oder gefunden ist nicht bereit zu zeigen, dass einer existiert. " Das Hinzufügen einer index.html hat nicht geholfen, und es wurden auch keine anderen Einstellungen des Tomcat geändert.

Schließlich fand ich das Problem an einem unerwarteten Ort: In Eclipse wurde die Option "Automatisch erstellen" nicht festgelegt. Daher wurde das Servlet nicht kompiliert und es wurde keine Datei "myServlet.class" auf dem Server bereitgestellt (in meinem Fall im Pfad .wtpwebapps/projectXX/WEB-INF/classes/XXpackage /). Manuelles Erstellen des Projekts Durch einen Neustart des Servers wurde das Problem behoben.

Meine Umgebung: Eclipse Neon.3 Release 4.6.3, Tomcat-Version 8.5.14., OS Linux Mint 18.1.

0
Buffy Underrun

Ich stand vor demselben Problem. 

Wenn ich mit der rechten Maustaste auf den Server klicke, wähle ich meinen Server manuell aus und es hat funktioniert.

Tun

Alt+Shift+X

wählen Sie dann Ihren Server manuell aus. Es könnte helfen.

0
eVader

Ich bin auch mit dem gleichen Problem konfrontiert und löse es, indem ich die Datei web.xml und die Datei applicationcontext.xml im Ordner WEB-INF ablegt.

Hoffe das hilft :)

0
krati

In Eclipse gehe zu Projekt -> klicke automatisch auf build und versuche es auszuführen 

0
Aiyaz Sattar

Wenn es sich um ein Maven-Projekt handelt, lösen Sie das Problem mit Maven Update. Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Projekt aktualisieren und starten Sie Ihr Projekt normal.

0
Rudy

Lösung 1: Ändern Sie die Version von Apache Tomcat (die neueste Version wird bevorzugt) (manueller Vorgang).

Lösung zwei: Installieren Sie den neuesten Eclipse IDE und konfigurieren Sie den Apache Tomcat-Server (interner automatischer Prozess i, eclipse übernimmt den Konfigurationsteil).

Nach dem erfolgreichen Ablauf des automatischen Prozesses muss der manuelle Prozess gut funktionieren. 

0
Akshay Kumar