Útmutató a RESTEasy-hoz
1. Bemutatkozás
JAX-RS (Java API for RESTful Web Services) egy Java API-készlet, amely támogatást nyújt a létrehozáshoz REST API-k. És a keretrendszer jól használja a kommentárokat ezen API-k fejlesztésének és telepítésének egyszerűsítése érdekében.
Ebben az oktatóanyagban a RESTEasy-t fogjuk használni, a JBoss a JAX-RS specifikáció hordozható megvalósítását biztosította egy egyszerű RESTful webszolgáltatás létrehozásához.
2. Projekt beállítása
Két lehetséges forgatókönyvet vizsgálunk meg:
- Önálló beállítás - minden alkalmazáskiszolgálón való működésre szolgál
- JBoss AS telepítő - csak a JBoss AS-ben történő telepítésre gondol
2.1. Önálló beállítás
Kezdjük a használatával JBoss WildFly 10 önálló beállítással.
A JBoss WildFly 10 a RESTEasy 3.0.11 verzióval érkezik, de amint látni fogja, konfiguráljuk a pom.xml az új 3.0.14 verzióval.
És hála a resteasy-servlet-inicializáló, A RESTEasy integrációt biztosít az önállóval Servlet 3.0 konténerek a ServletContainerInitializer integrációs felület.
Vessünk egy pillantást a pom.xml: jboss-deployment-structure.xml A JBoss-on belül minden, ami WAR, JAR vagy EAR néven van telepítve, modul. Ezeket a modulokat a dinamikus modulok. Ezek mellett van néhány statikus is modulok ban ben $ JBOSS_HOME / modulok. Mivel JBoss rendelkezik a RESTEasy-val statikus modulok - önálló telepítés esetén a jboss-deployment-structure.xml némelyikük kizárása érdekében kötelező. Ily módon minden osztály és BEFŐTTES ÜVEG fájljaink HÁBORÚ betöltődik: Ha a RESTEasy programot a JBoss 6-os vagy újabb verziójával kívánja futtatni, akkor választhatja az alkalmazáskiszolgálón már mellékelt könyvtárakat, ezzel egyszerűsítve a bomlást: Figyelje meg jboss-deployment-structure.xml már nincs szükség. Most nézzük meg itt az egyszerű projektünk web.xml-jét: resteasy.servlet.mapping.prefix csak akkor szükséges, ha relatív elérési utat szeretne megadni az API alkalmazáshoz. Ezen a ponton nagyon fontos észrevenni, hogy még nem nyilatkoztunk Servlet ban,-benweb.xml mivel nyugodt szervlet-inicializáló függőségként került hozzáadásra a következőben: pom.xml. Ennek oka - a RESTEasy biztosítja org.jboss.resteasy.plugins.servlet.ResteasyServletInitializer osztály, amely megvalósítja javax.server.ServletContainerInitializer. ServletContainerInitializer egy inicializáló, és minden szervlet kontextus készenléte előtt végrehajtásra kerül - ezzel az inicializálóval szervleteket, szűrőket vagy hallgatókat határozhat meg az alkalmazásához. A javax.ws.rs.core.Application osztály egy szabványos JAX-RS osztály, amelyet implementálhat, hogy információkat nyújtson a telepítésről: Mint láthatja - ez egyszerűen egy osztály, amely felsorolja az összes JAX-RS gyökér erőforrást és szolgáltatót, és ez a @ApplicationPath annotáció. Ha bármilyen üres halmazt ad vissza osztályok és szingulettek számára, akkor a WAR ellenőrzi a JAX-RS kommentár erőforrás és szolgáltató osztályokat. Végül nézzük meg az aktuális API-definíciót itt: Ebben a gyors bemutatóban bemutattuk a RESTEasy programot, és egy szuper egyszerű API-t építettünk vele. A cikkben használt példa mintaprojektként érhető el a GitHub-ban. 3.0.14. Végső org.jboss.resteasy resteasy-servlet-inicializáló $ {resteasy.version} org.jboss.resteasy resteasy-client $ {resteasy.version}
2.2. JBoss beállítóként
org.jboss.resteasy resteasy-jaxrs $ {resteasy.version}
3. Szerveroldali kód
3.1. Servlet 3. verzió web.xml
RestEasy példa resteasy.servlet.mapping.prefix / rest
3.2. Az alkalmazásosztály
@ApplicationPath ("/ rest") public class A RestEasyServices kiterjeszti az {private Set singletons = new HashSet () alkalmazást; public RestEasyServices () {singletons.add (új MovieCrudService ()); } @Orride public set getSingletons () {return singletons; }}
3.3. A szolgáltatások megvalósítási osztálya
@Path ("/ movies") nyilvános osztály MovieCrudService {privát térkép-leltár = új HashMap (); @GET @Path ("/ getinfo") @Produces ({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) nyilvános filmfilmByImdbId (@QueryParam ("imdbId") String imdbId) {if (invent.containsdKey (imdb) .get (imdbId); } else {return null; }} @POST @Path ("/ addmovie") @Cumsumes ({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response addMovie (Movie movie) {if (null! = Invent.get (movie.getImdbId ())) { return Response .status (Response.Status.NOT_MODIFIED) .entity ("A film már szerepel az adatbázisban."). build (); } készlet.put (film.getImdbId (), film); return Response.status (Response.Status.CREATED) .build (); }}
4. Konklúziók