2016-05-09 16 views
0

Ich versuche, einen Java-Webservice mit Jersey zu entwickeln, aber der Tomcat-Server gibt immer den 404-Fehler zurück.Jersey-Webservice. 404 Fehler

Einige Details:

  • tomcat 8
  • der Server arbeitet
  • andere Webservices arbeiten
  • i mit Maven bin nicht (alle .jars im WEB-INF/lib)
  • EDIT: dies sollte die uRL sein: http://localhost:8080/webservice/hi

Die Klasse:

package service; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/hi") 
public class Service { 
@GET 
@Produces(MediaType.TEXT_PLAIN) 
public String hello(){ 
    return "hi"; 
} 

    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHtmlHello() { 
    return "<html> " + "<title>" + "Hello Jersey" + "</title>" 
     + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; 
    } 
} 

Die Web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<display-name>FirstRestWebService</display-name> 
<servlet> 
    <display-name>Rest Servlet</display-name> 
    <servlet-name>RestServlet</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>service</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>RestServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
</web-app> 
+0

Gibt es einen Stack-Trace in der Konsole? – Bajal

+0

Ich habe die Tomcat-Protokolldateien überprüft, aber es gibt keine Ausnahme oder einen anderen Fehler – Meixe

+0

Wie Sie den Endpunkt aufrufen. Derselbe Pfad hat zwei verschiedene akzeptierte Antworttypen. Tun Sie etwas wie curl -H "Akzeptieren: text/plain" http: // localhost: 8080/hi "? –

Antwort

0

Ich sehe zwei Mehrdeutigkeiten in Ihrem Code. Ihre REST-Methoden haben keine unterschiedlichen Pfade (@Path). Eine andere Sache, die ich sehe, ist, dass Ihr Servlet Mapping Webservice überhaupt nicht erwähnt. Also, auch mit Eindeutigkeit implementiert, müssen Sie noch Webservice zu Ihrem Mapping hinzufügen, so dass es so funktioniert, wie Sie es erwarten.