Changes

Jax-rs 2.0

820 bytes added, 13:11, 16 February 2019
Hibakezelés
==Hibakezelés==
Ez egy sarkalatos pontja a REST interfész implementációnak. A @GET/POST/PUT annotációkkal ellátott metódusoknál csak azt tudjuk definiálni, hogy mi legyen a válasz típusa happy ágon, mikor a kérést rendeltetés szerűen ki tudta szolgálni a szerver, tehát a HTTP státusz kódja a válasznak a 200-as tartományba fog esni. Ha van visszatérési érték, akkor feltehetően ez 200 lesz, ha nincs, akkor 204, ezt automatikusan kezeli a JAX-RS.
 
 
* 500-as hibák: Az input paraméterek megfelelőek voltak, de a szerver oldalon nem várt hiba történt. (pl nem tudtunk egy szükséges háttérrendszerhez csatlakozni)
 
Egy java metódusból úgy lehet az előre definiált visszatérési értéken felül más típusú választ kijuttatni, ha PL egy megfelelő exception-t eldobunk, amit elkapunk és lekezelünk. Itt is ezt fogjuk tenni.
Ahhoz hogy a hibaágakat is kezelni tudjuk, létre kell hozzunk egyedi Exception osztályokat, és hozzájuk tartozó response mapper-eket, amik az Exception eldobása estén megkapják a vezérlést, és az Exception alapján össze tudják állítani a választ. Ehhez három osztályt kell létrehozzunk:
# Exception mapper osztály, ami megkapja a vezérlést ha WebServiceException dobódott, és a benne található információk alapján példányosítja a ErrorResponse osztályt, majd beleteszi a REST válaszba, amit a JAX-RS JSON formátumra fog hozni.
 
 
Elsőként definiáljuk azt az osztályt ami alapján a nem 200-as státusz esetén a válasz objektumot létre akarjuk hozni:
<source lang="java">
public class ErrorMessageResponse implements Serializable {
 
private String correlationId;
private String errorCode;
//Getters and setters ...
}
</source>
A HTTP válaszba JSON alakban ez így fog kinézni:
<pre>
{"correlationId":"XXX", "errorCode":"111"}
</pre>
 
Azt szeretnénk elér, hogy minden körülmények között, nem 200-as státusz esetén ez menjen vissza.
Hozzunk létre egy egyedi Exception implementációt
<source lang="java">