2016-06-04 4 views
0

Ich habe in den letzten zwei Stunden damit zu kämpfen. Ich habe mir viele verschiedene StackOverflow-Antworten angeschaut (viele Fragen erscheinen wie diese), aber keiner von ihnen hat für mich funktioniert.Java - Zugriff auf Tomcat/Jersey URL gibt 404 nicht gefunden

Ich habe eine einfache "CountryResources" -Klasse, die die @Path("/countries") verwendet, aber wenn ich zu navigieren, gibt es mir nur einen Fehler 404.

CountryResource Klasse, in einem worldmap.services Paket:

package worldmap.services; 

import model.Country; 
import model.CountryService; 
import model.ServiceProvider; 

import javax.json.Json; 
import javax.json.JsonArray; 
import javax.json.JsonArrayBuilder; 
import javax.json.JsonObjectBuilder; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 

@Path("/countries") 
public class CountryResource { 

    @GET 
    @Produces("application/json") 
    public String getCountries() { 
     System.out.println("Opgehaald"); 
     CountryService cs = ServiceProvider.getWorldService(); 
     JsonArrayBuilder jab = Json.createArrayBuilder(); 

     for(Country c : cs.getAllCountries()) { 
      JsonObjectBuilder job = Json.createObjectBuilder(); 
      job.add("code", c.getCode()); 
      job.add("name", c.getName()); 
      job.add("continent", c.getContinent()); 
      job.add("region", c.getRegion()); 
      job.add("surface", c.getSurface()); 
      job.add("population", c.getPopulation()); 
      job.add("government", c.getGovernment()); 

      jab.add(job); 
     } 
     JsonArray array = jab.build(); 
     return array.toString(); 
    } 

} 

Web XML:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="3.0" 
     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_3_0.xsd" 
     metadata-complete="false"> 

    <servlet> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>worldmap.services</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/restservices/*</url-pattern> 
    </servlet-mapping> 

</web-app> 
+0

Erhalten Sie beim Start Fehler? Hast du das Serverprotokoll überprüft? –

+0

Es gibt keine Route in der Wurzel Ihrer URL, vielleicht verschieben Sie die Restservices vorübergehend, um den Rest des Codes zu testen. –

+0

Vielleicht müssen Sie der URL den Kontextpfad hinzufügen, normalerweise der Name des Projekts –

Antwort

0

Das Problem gefunden wurde: Maven ist nicht die Abhängigkeiten des Programms das Ziel des Kopier lib Ordner. Ich muss versuchen, herauszufinden, wie ich das beheben kann.