Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Enterprise-IT-Praktikum JAX-RS-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk.

Ähnliche Präsentationen


Präsentation zum Thema: "Enterprise-IT-Praktikum JAX-RS-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk."—  Präsentation transkript:

1 Enterprise-IT-Praktikum JAX-RS-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk

2 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung2 Wer kennt es nicht – ROA ROA steht für Resource-oriented Architecture  Counterpart: Service-oriented Architecture (SOA) Roy Fielding: Representational State Transfer (ReST) Konzept: über Hyperlinks (URIs) werden Ressourcen bereitgestellt und/oder miteinander verknüpft –Adressierbarkeit –Unterschiedliche Repräsentationen –Zustandslosigkeit –Wohldefinierte Zugriffsoperationen –Hypermedia Wie komisch, passt ja perfekt zu HTTP…

3 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung3 Gibt’s da auch was von Ratiopharm? Nein, aber von Java: JSR-311  Java API for RESTful Web Services (JAX-RS) Reference Implementation „Jersey“ Subprojekt vom GlassFish-Application-Server http://jersey.java.net Unterstützt die Konstruktion von REST-konformen Schnittstellen mit Hilfe von Java-Annotationen JAX-RS 1.1 fertiggestellt Version 2.0 ist im Bearbeitungsstatus

4 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung4 Vorgehen Server-Seite Klassen mit Funktionalität programmieren Annotationen einfügen Web-Server-Deployment durchführen Client-Seite Testen z.B. mit curl auf Kommandozeile: curl –HAccept:application/json http://localhost:8080/rest/hello Browser-Plugin: XHR-Poster Jersey-Client-API

5 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung5 Server-Seite: Klassen programmieren public class HelloResource // Name beliebig { public String sayProst() // Name beliebig { return "Prost"; }

6 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung6 Server-Seite: Annotationen einfügen @Path("/hello") public class HelloResource //Name beliebig { @GET @Produces(MediaType.TEXT_PLAIN) public String sayProst() //Name beliebig { return "Prost"; }

7 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung7 Deployment: Servlet-Container mit Tomcat ServletAdaptor com.sun.jersey.spi.container.servlet.ServletContainer 1 ServletAdaptor /rest/* 30

8 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung8 Deployment: Java NIO mit Grizzly URI baseUri = UriBuilder.fromUri("http://localhost/rest").port(9998).build(); ResourceConfig rc = new PackagesResourceConfig("pkg.to.resources"); HttpServer srv = GrizzlyServerFactory.createHttpServer(baseUri, rc); System.in.read(); srv.stop(); Quelle: Jersey Documentation http://jersey.java.net/nonav/documentation/latest/user- guide.html#d4e54

9 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung9 Da geht noch was… Ein- und Ausgabeparameter Sub-resources-Konzept für strukturierten Ressourcen- Zugriff Automatisches Marshalling/Unmarshalling von Java- Objekten zu XML/JSON  sehr elegant z.B. mit JAXB

10 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung10 Ein- und Ausgabeparameter @Path("/users") public class UserResource { @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public String createUser(String userData) {... } @GET @Path("{userid}") @Produces(MediaType.APPLICATION_JSON) public String getUser(@PathParam("userid") String userId) {... }

11 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung11 Das Sub-resources-Konzept @Path("/rest") public class RestResource { @Path("users") public String userSubresource(String userData) { return new UserResource(); } public class UserResource {... } Sub-sub-Resources, Sub-sub-sub-Resources usw. möglich Sub-Resources erhalten KEINE Kontextinformationen

12 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung12 Automatisches Marshalling/Unmarshalling (1/2) Ein-/Ausgabe-Parameter standardmäßig Strings… Automatische Transformation wünschenswert JAXB XML-zu-Java-Objekt-Mapping-Spezifikation, JSR-222 http://jaxb.java.net/ Kann in Zusammenhang mit Jersey eingesetzt werden Sowohl für XML als auch für JSON Statt Strings werden in den Resource-Definitionen die JAXB-Beans angegeben Vorteil mit Hibernate: gemeinsame Klassen für Persistenz und Serialisierung möglich

13 Institut für Telematik | Enterprise-IT-Praktikum Enterprise-IT-Praktikum – JAX-RS-Einführung13 Automatisches Marshalling/Unmarshalling (2/2) // JAXB-Bean @XmlRootElement public class User { private String userName; private String password; } // JAX-RS-Ressource – Parameter und Rückgabe sind User-Objekte @Path("/users") public class UserResource { @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public User createUser(User userData) {... }


Herunterladen ppt "Enterprise-IT-Praktikum JAX-RS-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk."

Ähnliche Präsentationen


Google-Anzeigen