2016-09-12 3 views
0

ich diese URL machen wollenDie angeforderte Ressource ist nicht verfügbar, wenn Sie versuchen, zu tun bekommen

http://localhost:8080/HomeController/students/getAllStudents 

zu arbeiten und ich bekomme diese Fehlermeldung:

The requested resource is not available

Hier ist mein Code:

package controller; 
    @Path("/students") 
    public class HomeController { 

     @Path("/add") 
     @POST 
     @Produces(MediaType.TEXT_PLAIN) 
     @Consumes(MediaType.APPLICATION_JSON) 
     public static String add(Student student) throws Exception { 

     @Path("/getAllStudents") 
     @GET 
     @Produces(MediaType.TEXT_PLAIN) 
     public String getAllStudents() throws Exception { 

      return "dasda"; 
     } 

    } 
} 

<?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>StudentsService</display-name> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

<servlet> 
    <servlet-name> 
     Jersey REST Service 
    </servlet-name> 

    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 

    <init-param> 

     <param-name> 
      com.sun.jersey.config.property.packages 
     </param-name> 

     <param-value> 
      controller 
     </param-value> 

    </init-param> 

    <init-param> 

     <param-name> 
      com.sun.jersey.api.json.POJOMappingFeature 
     </param-name> 

     <param-value>true</param-value> 

    </init-param> 

    <load-on-startup>1</load-on-startup> 

</servlet> 

<servlet-mapping> 

    <servlet-name>Jersey REST Service</servlet-name> 

    <url-pattern>/HomeController/*</url-pattern> 

</servlet-mapping> 

</web-app> 

Nachdem der erste Link funktioniert, möchte ich, dass dieser Link auch funktioniert.

http://localhost:8080/students/getAllStudents 
+0

Wird Ihr Java-Code kompiliert? Vielleicht liege ich falsch, aber eine schließende Klammer '}' fehlt im Java-Code. Die Methode muss geschlossen werden, bevor die zweite gestartet wird. –

+0

ja java kompilieren – don

+0

hast du versucht, das url-muster auf '/ api' zu setzen? –

Antwort

0
 @Path("/students") 
    public class HomeController { 

     @Path("/add") 
     @POST 
     @Produces(MediaType.TEXT_PLAIN) 
     @Consumes(MediaType.APPLICATION_JSON) 
     public static String add(Student student) throws Exception { 

     @Path("/getAllStudents") 
     @GET 
     @Produces(MediaType.TEXT_PLAIN) 
     public String getAllStudents() throws Exception { 

      return "dasda"; 
     } 

    } 
} 

<?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>StudentsService</display-name> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

<servlet> 
    <servlet-name> 
     Jersey_REST_Service 
    </servlet-name> 

    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 

    <init-param> 

     <param-name> 
      com.sun.jersey.config.property.packages 
     </param-name> 

     <param-value> 
      name_of_teh package(e.g. if your HomeController lies in com.urName.controller.HomeController, then value is com.urName.controller) 
     </param-value> 

    </init-param> 

    <init-param> 

     <param-name> 
      com.sun.jersey.api.json.POJOMappingFeature 
     </param-name> 

     <param-value>true</param-value> 

    </init-param> 

    <load-on-startup>1</load-on-startup> 

</servlet> 

<servlet-mapping> 

    <servlet-name>Jersey_REST_Service</servlet-name> 

    <url-pattern>/HomeController/*</url-pattern> 

</servlet-mapping> 

</web-app> 

Die @Path sollten nie einen Schrägstrich am Ende enthalten haben, Sinus, den Pfad etwas wie/Studenten // macht. Darüber hinaus wurde das Controller-Paket nicht mit Jersey-Paketen zugeordnet, wo es die Controller finden sollte. Bitte versuchen Sie das korrigierte Code-Snippet, das oben gepostet wurde.

+0

behoben, immer noch nicht funktioniert, ist das Paket von homecontroller Controller – don

+0

können Sie die Gläser teilen, die Sie verwenden? – Bimlendu

+0

können Sie in Deployment-Protokolle suchen, ist es Wurffehler. Ein möglicher Grund kann sein, dass Sie JAX-RS 2.x verwenden, wobei das com.sun.jersey-Paket durch com.jersey ersetzt wurde – Bimlendu

Verwandte Themen