Drukuj - Vavatech.pl

Transkrypt

Drukuj - Vavatech.pl
Vavatech.pl
Tworzenie usług sieciowych SOAP oraz REST na platformie Java - 3
pytania i odpowiedzi ze szkolenia (wrzesień 2016)
2016-09-19
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ę JAXRS (@ApplicationPath), to niezbędne jest włączenie obsługi ról w implementacji JAX-RS. W
przypadku RestEasy trzeba wpisać:
<context-param>
<param-name>resteasy.role.based.security</param-name>
<param-value>true</param-value>
</context-param>
Ten wpis jest także niezbędny, aby działało @RolesAllowed."

Podobne dokumenty