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."