02.02.2013

JAX-RS 2.0 - Java Enterprise Edition 7 (JEE7)

In diesem Tutorial werden die Neuerungen von JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services vorgestellt. Dazu gehören neben der neuen und standardisierten Client-API, verschiedene Filter, Interceptoren und die Möglichkeit zur asynchronen Ausführung von Methoden. Außerdem wird auf MessageBodyReader und MessageBodyWriter eingegangen, weil diese nun auch auf der Client-Seite verwendet werden können.

Im Einzelnen werden folgende neue Features an Code-Beispielen vorgestellt:

Wichtig

Als ich die JAX-RS 2.0 Features ausprobiert habe, lag noch kein offizielles Release von Java EE7 vor. Deshalb habe ich den GlassFish Server Open Source Edition 4.0 (build 72) (Promoted) verwendet. Dort enthalten ist die Referenzimplementierung von JAX-RS 2.0 Jersey: 2.0-m11 2012-12-21.
Als IDE kann man NetBeans oder Eclipse verwenden und den Glassfish einfach integrieren. Eine weitere Vorraussetzung ist, dass Java 7 installiert ist.

Im Verlauf des Tutorials wird ein REST-Service mit verschiedenen Methoden und passenden JUnit-Tests erstellt. Der WebService wird in einem Web-Projekt JSRSServer abgelegt. Alles was die Client-API und die JUnit-Tests betrifft, kommt in das Projekt JAXRSClient. Die Klassen, die sowohl von der Server als auch vom Client benötigt werden, kommen in das Projekt JAXRSItemLibrary, so dass beide Projekte darauf Zugriff haben.

In dem Tutorial werden drei Projekte angelegt, die jeweils, die aufgeführten jar-Dateien benötigen:

  • JAXRSClient - Der REST-Client
    • jersey-client.jar
    • guava.jar
    • asm-all-repackaged.jar
    • cglib.jar
    • hk2-api.jar
    • hk2-locator.jar
    • hk2-utils.jar
    • javax.inject.jar
    • osgi-resource-locator.jar
    • jersey-common.jar
    • javax.ws.rs-api.jar
    • jackson-core-asl.jar
    • jackson-mapper-asl.jar
  • JSRSServer - Der REST-Server
    • jackson-core-asl.jar
    • jackson-mapper-asl.jar
    • JAXRSItemLibrary.jar
    (Die übrigen jar-Dateien werden über die Abhängigkeit zum Application-Server aufgelöst.)
  • JAXRSItemLibrary - Bibliothek, die Klasse für Client und Server zur Verfügung stellt
    • jersey-client.jar
    • jersey-common.jar
    • javax.ws.rs-api.jar
    • jackson-core-asl.jar
    • jackson-mapper-asl.jar

Alle diese jar-Dateien sind im modules-Verzeichnis des Glassfish 4 zu finden.

Weitere Informationen zur JSR-339

Weitere Informationen zum JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services findet man unter: JSR-339

Inhalt des Tutorials