A JAX-RS: Java API for RESTful Web Services a Java programozási nyelv egy API-ja, amely lehetővé teszi a REST architektúrájú webszolgáltatások létrehozását. A programozás során a Java SE 5-ben bevezetett annotációkat használunk az egyes paraméterek megfelelő jelölésére, ami jelentősen leegyszerűsíti a fejlesztés folyamát.

Az 1.1-es verziótól kezdve a JAX-RS hivatalos része a Java EE 6 szabványcsaládnak. A JSR 311 specifikálja. Hatalmas előnye, hogy nem szükséges semmilyen konfiguráció a használatához, csak a publikálandó metódusokat kell megjelölnünk a megfelelő annotációkkal, és a JAX-RS keretrendszere elvégzi a szükséges lépéseket, továbbá megspórolhatjuk a hagyományos webszolgáltatásoknál megszokott XML transzformációk nagy részét. A nem Java EE 6 környezetekben egy kis bejegyzést kell a deployment descriptor web.xml-jében elhelyezni.

Specifikáció Ahhoz, hogy egy általunk készített osztályt, amely lehet akár egy POJO is, megfelelő annotációkkal kell ellátni, amelyek a következők lehetnek: @Path: egy relatív útvonal, amelyen a megadott erőforrást, amely lehet egy osztály vagy annak a metódusa, elérünk. @GET, @PUT, @POST, @DELETE: megadja, hogy a böngésző milyen HTTP kérést használjon az erőforrás eléréséhez. @Produces: megadja a válasz MIME típusát. @Consumes: a HTTP kérés accept paraméterét állítja be, amivel szabályozhatjuk, hogy az adott erőforrásunk milyen típusú adatot fogad el. @PathParam, @QueryParam, @HeaderParam, @CookieParam, @MatrixParam, @FormParam: specifikálja a paraméter forrását. @PathParam: az ilyen annotációval jelölt paraméter a HTTP kérés URL-jében van megadva. @QueryParam: az URL kérés paraméteréből jön. @HeaderParam: a HTTP kérés fejlécében levő paramétereket tudjuk ezzel az annotációval elkérni. @CookieParam: a HTTP kéréshez csatolt sütiből (angolul cookie-ból) jön. @MatrixParam: a kérések mátrix paramétereit kérhetjük el ezen a módon. @FormParam: a HTTP POST kérésben elküldött paramétereket tudjuk elkérni vele.

JAX-RS 2.0 2011 januárjában a JCP létrehozta a JSR 339 szakértői csoportot, hogy kidolgozzák a JAX-RS 2.0-t.JSR 339 Group, Java Community Process (JCP) A fő cél többek között az volt hogy létrehozzanak egy közös kliens API és támogatást nyújtsanak a Hypermedia felé a REST HATEOAS alapelvet követve. 2013 májusában elérkeztek a végleges kiadási fázisba.JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services

Példa A következő példában egy egyszerű REST alapú webszolgáltatás látható, amely visszaadja az URL-ben megadott név esetén a "Hello név" szöveget. import javax.ws.rs.GET; import javax.ws.rs.Produces; import javax.ws.rs.Path;

// A "/greetings" relatív URL-en lesz elérhető ez az osztály. @Path("/greetings/{nev}") public class GreetingsResource {

// Amikor HTTP GET kérést intézünk a szerver felé a www.valami.hu/greetings URL-re, // akkor az alábbi metódus fog lefutni, és az eredménye egy "plain/text" MIME típusú // szöveg lesz. @GET @Produces("text/plain") public String getHello(@PathParam("nev") String nev) { return "Hello " + nev;

Implementációk Apache CXF, egy nyílt forráskódú, az Apache Software Foundation által kezelt megvalósítás. Jersey, a Sun Microsystems (már Oracle) által készített környezet. RESTEasy, JBoss implementációja. Restlet, Jerome Louvel és Dave Pawson, a REST keretrendszerek úttörői által készített implementáció. Apache Wink, szintén az Apache Software Foundation projektje. WebSphere Application Server az IBM-től: V7.0: a "Feature Pack for Communications Enabled Applications"-on keresztül V8.0-tól: alapból támogatott WebLogic Application Server az Oracle-től, lásd a jegyzeteket Apache Tuscany (https://web.archive.org/web/20151205070713/http://tuscany.apache.org/documentation-2x/sca-java-bindingrest.html) Cuubez keretrendszer (https://web.archive.org/web/20190707005602/http://cuubez.com/) Everrest, Codenvy megvalósítása

Jegyzetek

További információk Hivatalos Oracle JAX-RS Tutorial Jersey tutorial A JSR 311 specifikáció

Fordítás

Kategória:Webszolgáltatások Kategória:Java XML API-k