Ich habe Jersey (mit Tomcat-Server) gemäß den bis zu Schritt 6.3 beschriebenen Details konfiguriert: http://www.vogella.com/tutorials/REST/article.html#jerseyprojectsetup
Unten ist meine web.xml-Datei. Der einzige Unterschied besteht darin, dass der Pfad/Paketname für den jersey.config.server.provider.packages
die Anweisungen hat;
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.vogella.jersey.first</param-value>
weil com.vogella.jersey.first
ihr Paketname ist, während ich mich auf mein Standardpaket (jerseytest) wähle
aber das ist meine web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>jerseytest</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>jerseytest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
wenn ich die Anwendung auf dem Tomcat-Server starte, erhalte ich Folgendes:
HTTP-Status 404 - nicht gefunden
Statusbericht schreiben
Message /jerseytest/
Beschreibung Der Origin-Server hat keine aktuelle Darstellung gefunden für die Zielressource oder ist nicht bereit zu zeigen, dass eine vorhanden ist.
Apache Tomcat/8.5.23
und wenn ich den Browser auf den im Tutorial genannten Endpunkt zeige: http://localhost:8080/com.vogella.jersey.first/rest/hello
Ich erhalte einen Fehler, der nicht gefunden wurde:
HTTP-Status 404 - nicht gefunden
Statusbericht schreiben
Message Not Found
Beschreibung Der Origin-Server hat keine aktuelle Darstellung gefunden für die Zielressource oder ist nicht bereit zu zeigen, dass eine vorhanden ist.
Apache Tomcat/8.5.23
Wenn ich den Browser direkt auf http: // localhost: 8080/rest/hello verweise
Ich bekomme:
HTTP-Status 404 - nicht gefunden
Statusbericht schreiben
Message /rest/hello
Beschreibung Der Origin-Server hat keine aktuelle Darstellung gefunden für die Zielressource oder ist nicht bereit zu zeigen, dass eine vorhanden ist.
Apache Tomcat/8.5.23
Meine Java-Klasse ist identisch mit dem Beispiel in den Anweisungen, nur dass meine im Standardpaket enthalten ist:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
// Plain old Java Object it does not extend as class or implements
// an interface
// The class registers its methods for the HTTP GET request using the @GET annotation.
// Using the @Produces annotation, it defines that it can deliver several MIME types,
// text, XML and HTML.
// The browser requests per default the HTML MIME type.
//Sets the path to base URL + /hello
@Path("/hello")
public class Hello {
// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello Jersey";
}
// This method is called if XML is request
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
}
// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
}
}
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.
Klicken Sie mit der rechten Maustaste auf project > Build Path > Configure Build path > Deployment Assembly > Add(right hand side) > Folder > (add your jsp folder. In default case it is src/main/webapp)
.
Jede Methode muss den Pfad angeben
so was :
@GET
@Path("testOne")
@Produces(MediaType.TEXT_HTML)