Java Reference
In-Depth Information
Der Begriff REST (engl.
Re
presentational
S
tate
T
ransfer) stammt von Roy Fielding aus
dem Jahr 2000 [Fie00]. In dieser Publikation schlug Roy Fielding vor, das hauptsäch-
lich für die Übertragung von Webseiten eingesetzte HTTP (Hyper Text Transfer Pro-
tocol) für den Aufbau einer servicebasierten Architektur zu nutzen.
Der Java-Standard
JAX-RS
bietet Unterstützung beim Umsetzen von REST-Diensten
in Java. Im Unterschied zu dem bereits oben vorgestellten JAX-WS handelt es sich bei
JAX-RS aber nicht um Web Services auf Basis von XML bzw. SOAP sondern um Web
Services, die direkt auf HTTP aufsetzen. Eine Referenzimplementierung ist als Open-
Source-Projekt unter dem Namen Jersey
108
zu finden.
HTTP stellt verschiedene Anfragemethoden zur Verfügung. In einem Browser wird bei-
spielsweise beim Aufruf einer Webseite die Methode HTTP-GET verwendet. Im Rah-
men von REST werden den folgenden Anfragemethoden bestimmte Verwendungs-
zwecke zugeordnet:
x
GET:
Eine Ressource wird vom Server angefordert bzw. gelesen.
x
POST:
Eine neue Ressource wird auf dem Server erstellt.
x
PUT:
Eine auf dem Server vorhandene Ressource wird aktualisiert.
x
DELETE:
Eine auf dem Server vorhandene Ressource wird gelöscht.
Eine Ressource ist eine adressierbare Information, z. B. ein Benutzerkonto.
Die folgende Klasse zeigt einen Serviceanbieter, der mit JAX-RS implementiert wurde.
Durch die Annotation
@Path
wird der Basispfad des Serviceanbieters definiert. Für
jede angebotene Methode kann dann die gewünschte HTTP-Anfragemethode (hier
@GET
) und die Adresse mit der Annotation
@Path
festgelegt werden (hier
methodeA
und
methodeB
). Im Beispiel erhält die Methode
methodeA()
einen Übergabeparame-
ter mit dem Namen
nachricht
, der beim Aufruf über HTTP-GET gesetzt werden
kann. Die Annotation
@Consumes
beschreibt die Codierung, die die Methode im über-
gebenen Argument erwartet (hier
MediaType.TEXT_PLAIN
). Die Annotation
@Pro-
duces
beschreibt die Codierung der Daten, welche die Methode zurückgibt. Hier die
Klasse
ServiceanbieterImpl
mit den JAX-RS Annotationen
109
:
// Datei: Serviceanbieter.java
@Path ( "Serviceanbieter" )
public class ServiceanbieterImpl {
@GET
@Path ("methodeA/{Nachricht}" )
@Consumes (MediaType.TEXT_PLAIN)
public Response methodeA
(@PathParam("Nachricht")
String nachricht) {
System.out.println (
"Serviceanbieter: Methode A wurde aufgerufen");
System.out.println ("Parameter: " + nachricht);
return Response.ok().build();
}
108
Die Webseite des Projekts ist: http://jersey.java.net.
109
In diesem Programmbeispielen wurde aus Gründen der Übersichtlichkeit auf die benötigten "import"-
Anweisungen verzichtet. Der vollständige Quellcode ist über den begleitenden Webauftritt zugäng-
lich.
Search WWH ::
Custom Search