Ich schreibe einen RESTful Web Service. Technologies, die ich benutze:Wie aktivieren/deaktivieren Sie HTTP-Methoden für RESTful Web Service?
- Eclipse-EE Kepler IDE
- Glassfish 3 (basierend auf Java 6)
- Jersey
- JDK v7
Wenn ich mit einer Java-Methode mit Anmerkungen versehen, zum Beispiel die @DELETE
Annotation Ich bekomme den folgenden HTTP-Fehler (über URI aufgerufen):
Ich würde gerne wie aktivieren/deaktivieren (so dass zum Aktivieren/Deaktivieren der oben genannten HTTP-Fehler) diese Methoden (PUT, HEAD, etc.) und auf welcher Ebene kann es getan werden (Glassfish, Web.xml usw.). Können Sie alle diese Ressourcenmethoden (mit HTTP-Methodentyp annotiert) entweder über den URI des Webbrowsers, über die <form>
oder über die eigenständige Clientanwendung (ohne Browser) aufrufen?
Zum Beispiel, ob die folgende Konfigurationszeile auf Deployment Descriptor vorhanden ist, macht es keinen Unterschied:
<security-constraint>
<web-resource-collection>
<web-resource-name>RESTfulServiceDrill</web-resource-name>
<url-pattern>/drill/rest/resource/*</url-pattern>
<http-method>DELETE</http-method>
</web-resource-collection>
Natürlich kann man die eine bestimmte Ressource Methode deaktivieren, indem Sie eine Ausnahme zu werfen von ihm (und es zu einem HTTP-Fehler zuordnen) als Hinweis darauf. Dies würde bedeuten, dass die Implementierung beispielsweise nicht verfügbar ist.
Bisher arbeiten nur die Ressourcenmethoden @GET und @POST (auf der <form>
), die anderen annotierten Methoden wie @POST (über URI), @PUT, @DELETE, @OPTIONS gibt den obigen HTTP-Fehler zurück . Und hier braucht meine Frage Lösungen. Warum verursachen die erwähnten Ressourcenmethoden einen HTTP-Fehler, wenn die ersten beiden nicht funktionieren?
Ein Beispiel für eine Ressource Methode:
@DELETE
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
@Path("/getDelete/{value}/{cat}")
public String getDelete(@PathParam("value") String value, @PathParam("cat") String cat){
return value+" : "+cat;
}
Aufrufe URL:
<a href= "/RESTfulServiceDrill/rest/v6/exception/getDelete/Animal/cat">getDelete</a>
Der Deployment-Deskriptor leer ist, mit Ausnahme der obigen Zeilen von XML-Code. Bisher habe ich die App so implementiert, dass sie mit Annotationen funktioniert, ohne Web.xml (enthält nur einige Standardwerte, z. B. index.jsp-Dateien).
Irgendwelche Ideen da draußen?
Ich verstehe Ihre Frage nicht wirklich. Haben Sie Ihr Projekt im Wesentlichen ausgeführt, d. H. Funktioniert eine Methode Ihrer REST-Klassen? Wenn nicht, gibt es ein Problem mit Ihrer Einrichtung, wenn ja, sollten Sie diese Methode als Beispiel nehmen. Für weitere Hilfe aktualisieren Sie bitte die Frage mit Ihrem vollständigen 'web.xml' und Beispielcode. – unwichtich
Für mich macht Ihre Frage als Ganzes keinen Sinn, daher denke ich, der Grund für alle Down-Stimmen. –
Könnten Sie Beispiele dafür geben, was Sie meinen? Deine Frage ist ziemlich unklar. Sie geben die REST-Methode für den entsprechenden Pfad in Java mit Jersey an. Außerdem - definieren Sie einen GET für diesen Pfad, bevor Sie DELETE definieren? – Signus