Pytania w tym artykule pojawiły się podczas szkolenia Tworzenie usług sieciowych SOAP oraz REST na platformie Java realizowanego w dniach 12-16.09.2016r.
Patryk Czarnik
SENIOR JAVA DEVELOPER AND TRAINER
W jaki sposób w SOAP można przesyłać kolekcje rekordów z danymi?
„Jeśli chodzi o strukturę komunikatów – nie jest to żaden problem: XML Schema pozwala zdefiniować sekwencje nieograniczonej długości, a Java (technologie JAX-WS i JAXB) automatycznie mapuje to na listy obiektów. Wynikiem metody web serwisu może być po prostu List
Problemem może być fizyczny rozmiar komunikatów, który może wpływać na wydajność albo w ogóle być niemożliwy do obsłużenia w niektórych środowiskach sieciowych. Jeśli trzeba, można już samemu zaimplementować logikę dzielenia wyników na porcje zwracane w kolejnych zapytaniach (podobnie jak w aplikacjach webowych robi się dzielenie wyników wyszukiwania na strony).”
Czy JAX-RS potrafi automatycznie zamienić na format XML/JSON wynik będący kolekcją lub tablicą?
„Zamiana na XML działa dla tablic i list pod warunkiem, że elementy kolekcji są klasy obsługiwanej przez JAXB. Jeśli to nasza klasa, musimy ją oznaczyć @XmlRootElement.
Zamiana na JSON jest zależna od implementacji. W RestEasy (serwery JBoss/WildFly), gdy do obsługi formatu JSON używana jest biblioteka Jackson (obecnie domyślna konfiguracja), translacja jest możliwa i nie wymaga żadnych dodatkowych wysiłków. W innych implementacjach (Jettison, Moxy) często wymagania są takie same jak dla XML (@XmlRootElement).”
Projekt webowy używający technologii JAX-RS. Po skonfigurowaniu w web.xml chronionego dostępu do podkatalogu, serwer nie wpuszcza nawet wtedy gdy jesteśmy zalogowani (wciąż przekierowuje na formularz logowania)?
„Jeśli chroniony podkatalog mieści się w ramach ścieżek obsługiwanych przez aplikację JAX-RS (@ApplicationPath), to niezbędne jest włączenie obsługi ról w implementacji JAX-RS. W przypadku RestEasy trzeba wpisać:
Ten wpis jest także niezbędny, aby działało @RolesAllowed.”