tytuł oryginału: mastering microservices with javaoauth 2.0 121 specyfikacja oauth 2.0 — krótko...

32

Upload: others

Post on 16-Jul-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa
Page 2: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Tytuł oryginału: Mastering Microservices with Java

Tłumaczenie: Krzysztof Rychlicki-Kicior

ISBN: 978-83-283-3218-8

Copyright © Packt Publishing 2016

First published in the English language under the title ‘Mastering Microservices with Java – (9781785285172)’.

Polish edition copyright © 2017 by Helion SA. All rights reserved.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/mikjavMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Spis tre ci

O autorach 9

O recenzencie 10

Przedmowa 11

Rozdzia 1. Koncepcja rozwi zania 15

Rozwój mikrous ug 16Omówienie architektury monolitycznej 17Problemy architektury monolitycznej i ich rozwi zania w mikrous ugach 17

Jednowymiarowa skalowalno 20Wycofanie wersji produkcyjnej w razie problemów 21Problemy zwi zane z wdra aniem nowych technologii 21Mikrous ugi a metodyki zwinne 22atwo tworzenia oprogramowania — da si lepiej! 23

Budowanie mikrous ug — kolejno wykonywania dzia a 24Wdra anie mikrous ug w kontenerach na przyk adzie Dockera 25

Podsumowanie 28

Rozdzia 2. Konfiguracja rodowiska programistycznego 29

Konfiguracja Spring Boot 30Omówienie technologii Spring Boot 30Dodajemy Spring Boot do przyk adowego projektu 31Dodajemy wbudowany serwer Jetty 33

Przyk adowa aplikacja typu REST 34Piszemy klas kontrolera REST 35Uruchamianie przyk adowej aplikacji 38

Konfiguracja procesu budowania aplikacji 39Uruchomienie narz dzia Maven 39Wykonywanie polecenia w terminalu 40

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Spis tre ci

4

Testowanie API za pomoc rozszerzenia Postman 40Prawid owe przypadki testowe 43Nieprawid owe przypadki testowe 44

Instalacja i konfiguracja rodowiska NetBeans 45ród a 48

Podsumowanie 49

Rozdzia 3. Projektowanie sterowane modelem dziedziny 51

Podstawy projektowania sterowanego modelem dziedziny 52Poj cia, terminy, definicje 53

Wszechobecne s ownictwo 53Wielowarstwowa architektura 54Artefakty zwi zane z projektowaniem sterowanym modelem dziedziny 55

Projektowanie strategiczne i jego za o enia 63Ograniczony kontekst 64Integracja ci g a 64Mapa kontekstu 65

Przyk adowa us uga dziedziny 68Implementacja encji 69Implementacja repozytorium 70Implementacja us ugi 72

Podsumowanie 73

Rozdzia 4. Implementujemy mikrous ug 75

Omówienie systemu OTRS 76Opracowywanie i implementacja mikrous ug 77

Mikrous uga Restaurant 78Us ugi u ytkowników i rezerwacji 87Rejestracja i wykrywanie us ug (us uga Eureka) 87Wykonanie 88

Testowanie 88ród a 91

Podsumowanie 91

Rozdzia 5. Wdra anie i testowanie 93

Podstawy architektury mikrous ug w Netflix OSS 93Równowa enie obci enia 95

Równowa enie obci enia po stronie klienta 95Równowa enie obci enia po stronie serwera 98

Wy cznik automatyczny a monitorowanie 101Stosowanie metod awaryjnych aplikacji Hystrix 101Monitorowanie us ug 102Konfiguracja pulpitu Hystrix 103Konfiguracja aplikacji Turbine 105

Wdra anie mikrous ug za pomoc kontenerów 106Instalacja i konfiguracja 106

ród a 115Podsumowanie 116

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Spis tre ci

5

Rozdzia 6. Mikrous ugi a bezpiecze stwo 117

Dodanie obs ugi protoko u SSL 117Uwierzytelnianie i autoryzacja 120

OAuth 2.0 121Specyfikacja OAuth 2.0 — krótko i na temat 122

Implementacja OAuth z wykorzystaniem Spring Security 138ród a 147

Podsumowanie 148

Rozdzia 7. U ytkowanie mikrous ug za pomoc aplikacji webowej 149

Ogólne za o enia frameworka AngularJS 150MVC 150MVVM 150Modu y 151Dostawcy i us ugi 152Zakresy 153Kontrolery 153Filtry 153Dyrektywy 154Router interfejsu u ytkownika — UI-Router 154

Implementacja funkcji systemu OTRS 155Lista restauracji/strona domowa 155Wyszukiwanie restauracji 167Widok szczegó ów restauracji z opcj rezerwacji 168Strona logowania 169Potwierdzenie rezerwacji 172

Konfiguracja aplikacji webowej 172ród a 183

Podsumowanie 184

Rozdzia 8. Dobre praktyki i istotne regu y tworzenia mikrous ug 185

W a ciwy sposób my lenia 185Dobre praktyki i przydatne regu y 187

Nanous uga (niezalecana), rozmiar i monolityczno 187Ci g a integracja i wdra anie 188Automatyzacja testów end-to-end 189Automonitorowanie i logowanie 190Oddzielny magazyn danych dla ka dej mikrous ugi 191Granice transakcji 192

Narz dzia i frameworki do tworzenia mikrous ug 193Netflix Open Source Software (OSS) 193

ród a 199Podsumowanie 199

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Spis tre ci

6

Rozdzia 9. Rozwi zywanie problemów 201

Obs uga logów i stos ELK 201Krótkie wprowadzenie 202Konfiguracja stosu ELK 204

Zastosowanie skorelowanych ID dla wywo a us ug 207Jak rozwi za ten problem? 207

Zale no ci i wersje 207Zale no ci cykliczne i ich wp yw 207Zarz dzanie ró nymi wersjami 208Dowiedz si wi cej 208

ród a 209Podsumowanie 209

Skorowidz 211

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

4

Implementujemymikrous ug

W tym rozdziale przejdziemy od projektu do implementacji naszej przyk adowej aplikacji— internetowego systemu rezerwacji stolików (Online Table Reservation System — OTRS).Skorzystamy z projektu opracowanego w poprzednim rozdziale i rozszerzymy go, aby stwo-rzy mikrous ug . Poznasz tu zasady implementacji projektu, ale tak e inne wa ne aspektytworzenia mikrous ug — budowanie, testowanie i tworzenie archiwów aplikacji. Cho skon-centrujemy si na implementacji us ugi restauracji, podobne podej cie mo na zastosowarównie przy tworzeniu innych us ug wchodz cych w sk ad OTRS.

W tym rozdziale zajmiemy si nast puj cymi zagadnieniami: Omówimy ogólne za o enia systemu OTRS. Zaimplementujemy mikrous ug . Przeprowadzimy testy.

Skorzystamy z kluczowych konceptów DDD, które omówili my w poprzednim rozdziale.Zastosowali my je wtedy do stworzenia modelu dziedzinowego w j zyku Java. Teraz przej-dziemy od prostej implementacji dziedziny do implementacji opartej na frameworku Spring.Skorzystamy z technologii Spring Boot, aby zaimplementowa koncepcje wynikaj ce z pro-jektowania sterowanego modelem dziedziny, a tak e przekszta cimy je z j zyka Java do mo-delu opartego na frameworku Spring.

U yjemy tak e frameworka Spring Cloud, który pozwoli nam na stworzenie rozwi zaniachmurowego. Spring Cloud równie wykorzystuje Spring Boot, dzi ki któremu mo emy za-stosowa wbudowany kontener aplikacji (Tomcat lub Jetty) wewn trz Twojej us ugi, opakowanej

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

76

jako JAR lub WAR. Archiwum jest uruchamiane jako osobny proces, a mikrous uga zajmie sidostarczaniem odpowiedzi dla wszystkich da , które zosta y opisane na li cie ko cówekw danej us udze.

Spring Cloud mo na zintegrowa tak e z us ug Netflix Eureka — rejestrem us ug. OTRSskorzysta z tej us ugi do rejestracji i wykrywania mikrous ug.

Omówienie systemu OTRSZnaj c zasady tworzenia mikrous ug, mo emy stwierdzi , e ka da cz aplikacji, która jestw stanie funkcjonowa niezale nie, powinna by odr bn mikrous ug . W przypadku systemuOTRS mo emy wyró ni trzy g ówne mikrous ugi — restauracj , rezerwacj i u ytkownika.Oczywi cie, mo na definiowa równie inne mikrous ugi, jednak my skupimy si na tychtrzech. Aby by y one w pe ni niezale ne, utworzymy dla nich odr bne bazy danych.

Zakres funkcjonalny wymienionych us ug mo na opisa nast puj co: Us uga restauracji (Restaurant): umo liwia podstawowe zarz dzanie zasobami

restauracji — tzw. CRUD (ang. Create, Read, Update, Delete — dodawanie,odczyt, modyfikacja i usuni cie), a dodatkowo ich przeszukiwanie z wykorzystaniemrozmaitych kryteriów. Pozwala równie na wi zanie restauracji i stolików.Restauracja udost pni tak e encje stolika (Table).

Us uga u ytkownika (User): pozwoli na wykonanie operacji typu CRUD dla encji User. Us uga rezerwacji (Booking): pozwoli na dokonywanie rezerwacji (operacje typu

CRUD) na podstawie us ug Restaurant i User. Przeszukiwanie dost pne w us udzeRestaurant pozwoli na znalezienie wybranej restauracji; lista powi zanych z restauracjstolików umo liwi wybór konkretnego stolika na podstawie informacji o dost pno cistolików. Us uga ta utworzy zwi zek pomi dzy encj Restaurant/Table a User.

Rysunek 4.1 podkre la fakt, e ka da z mikrous ug dzia a niezale nie. To w a nie dlategomikrous ugi mog by tworzone, rozwijane i zarz dzane niezale nie, bez wp ywu na inne.Ka da z us ug ma odr bn architektur warstwow i baz danych. Nie ma ogranicze codo stosowanych do tworzenia technologii, frameworków czy j zyków programowania.W dowolnym momencie mo esz te tworzy nowe mikrous ugi, np. do celów ksi gowych,które by yby wykorzystywane przez us ug Restaurant. To samo dotyczy us ug analitycz-nych i do raportowania.

Do celów demonstracyjnych zajmiemy si implementacj ograniczon do trzech wymienio-nych powy ej us ug.

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

77

Rysunek 4.1. Mikrous ugi a rejestracja i wykrywanie

Opracowywanie i implementacja mikrous ugTeraz zajmiemy si implementacj sterowan modelem dziedziny, a tak e podej ciem przed-stawionym w poprzednim rozdziale w celu implementowania mikrous ug za pomoc frame-worka Spring Cloud. Przypomnijmy sobie kluczowe artefakty naszego projektu:

Encje: s to obiekty identyfikowalne i niezmienne przez czas yciaproduktu/us ugi. Obiekty te nie s definiowane za pomoc swoich atrybutów— maj odr bn to samo i zachowan ci g o istnienia.Encje maj swoj to samo i zachowuj ci g o , a tak e atrybuty, które jednak niemaj wp ywu na ci g o . Obiekty warto ci (ang. Value Objects — VO) maj za totylko atrybuty, nie dysponuj c w asn to samo ci . Dobr praktyk jest unikaniezmian w obiektach warto ci. We frameworku encje stanowi zwyk e obiekty j zykaJava (POJO), dlatego b dziemy ich u ywa tak e jako obiektów warto ci.

Us ugi: stanowi typowy element wielu projektów. S u ywane w warstwiedziedziny w projektowaniu sterowanym modelem dziedziny. Obiekt us uginie zawiera wewn trznego stanu — jego jedynym celem jest udost pnianiezachowania dziedziny. Obiekty us ug udost pniaj zachowania, które nie szwi zane z konkretnymi encjami lub obiektami warto ci. Obiekty us ugudost pniaj jedno lub wiele zachowa jednej lub wi kszej liczbie encji lubobiektów warto ci. Najlepiej jest definiowa us ugi jawnie w modelu dziedziny.

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

78

Obiekt repozytorium: obiekt ten stanowi element modelu dziedziny, który obs ugujepami trwa , tak jak bazy danych, zewn trzne ród a itd., aby pozyskiwautrwalone obiekty. Po otrzymaniu dania przez repozytorium w celu uzyskaniareferencji do obiektu, je li obiekt jest dost pny bezpo rednio w repozytorium,zwracana jest do niego referencja. W przeciwnym razie najpierw jest onwczytywany z zewn trznego ród a.

Pobieranie przyk adowego kodu

Przyk adowy kod jest dost pny na serwerze FTP wydawnictwa Helion, pod adresem ftp://ftp.helion.pl/przyklady/mikjav.zip.

API ka dej mikrous ugi stanowi us ug sieciow typu REST. API naszego systemuwykorzystuje metody protoko u HTTP, takie jak GET i POST, a tak e typowstruktur ko cówki typu REST. dania i odpowiedzi s zdefiniowane za pomocformatu JSON. Mo na równie stosowa j zyk XML.

Mikrous uga RestaurantMikrous uga Restaurant zostanie udost pniona za pomoc ko cówek typu REST. Poni szeko cówki s dost pne w mikrous udze Restaurant. Oczywi cie, liczba ko cówek nie jestograniczona:

Ko cówka GET /v1/restaurants/<Restaurant_ID>

Parametry

Nazwa Opis

Restaurant_ID Parametr cie ki, który reprezentuje unikaln restauracj skojarzon z tym ID.

danie

W a ciwo Typ Opis

Brak

Odpowied

W a ciwo Typ Opis

Restaurant Obiekt typu Restaurant Obiekt restauracji skojarzony z danym ID

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

79

Ko cówka GET /v1/restaurants

Parametry

Nazwa Opis

Brak

danie

W a ciwo Typ Opis

Name String Parametr zapytania, który okre la nazw lubfragment nazwy restauracji.

Odpowied

W a ciwo Typ Opis

Restaurants Tablica obiektów restauracji Zwraca wszystkie restauracje, których nazwyzawieraj warto parametru.

Ko cówka POST /v1/restaurants

Parametry

Nazwa Opis

Brak

danie

W a ciwo Typ Opis

Restaurant Obiekt restauracji Reprezentacja obiektu restauracji w formacie JSON

Odpowied

W a ciwo Typ Opis

Restaurant Obiekt restauracji Nowo utworzony obiekt typu Restaurant

Na tej samej zasadzie mo emy dodawa rozmaite ko cówki i ich implementacje. Do celówdemonstracyjnych powy sze ko cówki zostan zaimplementowane za pomoc technologiiSpring Cloud.

Klasa kontroleraKontroler us ugi Restaurant wykorzystuje adnotacj @RestController, aby wygenerowa ko -cówki us ugi. Szczegó y dzia ania tego mechanizmu omówili my w rozdziale 2. @RestControllerto adnotacja na poziomie klasy, która jest u ywana wobec klas zasobów. Jest to po czenie ad-notacji @Controller i @ResponseBody. Zwraca ona obiekt dziedziny.

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

80

Wersjonowanie APIId c naprzód, chcia bym wyja ni obecno prefiksu v1 w ko cówce typu REST. Oznacza onawersj API. Jest to niezwykle wa na kwestia. Wersjonowanie API jest kluczowe, poniewa APIz czasem ulegaj zmianom. Twoja wiedza i do wiadczenie zmieniaj si z up ywem czasu, coprowadzi do wprowadzania zmian w API. Ka da zmiana w API mo e spowodowa problemyz dzia aniem aplikacji klienckich.

Zarz dzanie wersjami API mo na zrealizowa na kilka sposobów. Jednym z nich jest podawaniewersji w cie ce lub w nag ówku HTTP. Nag ówek HTTP mo e zawiera specjalny nag ówek

dania lub nag ówek Accept, dzi ki czemu mo na okre li wersj API. Wi cej informacji znaj-dziesz w ksi ce REST. Najlepsze praktyki i wzorce w j zyku Java Bhaktiego Mehty (Helion, 2015).

@RestController@RequestMapping("/v1/restaurants")public class RestaurantController { protected Logger logger = Logger.getLogger(RestaurantController.class.getName()); protected RestaurantService restaurantService; @Autowired public RestaurantController(RestaurantService restaurantService) { this.restaurantService = restaurantService; } /** * Pobiera restauracje o okre lonej nazwie. Niewra liwo na wielko znaków jest cz ciowo obs ugiwana. * Wywo anie <code>http://…/restaurants/rest</code> znajdzie wi c dowolne restauracje zawieraj ce * cz on 'rest' lub 'REST' w nazwie. * * @param name * @return Niepusta kolekcja restauracji. */ @RequestMapping(method = RequestMethod.GET) public ResponseEntity<Collection<Restaurant>> findByName(@RequestParam("name") String name) { logger.info(String.format("Wywo anie metody restaurant-service findByName():{} dla {} ", restaurantService.getClass().getName(), name)); name = name.trim().toLowerCase(); Collection<Restaurant> restaurants; try { restaurants = restaurantService.findByName(name); } catch (Exception ex) { logger.log(Level.WARNING, "Wyj tek metody findByNameREST", ex); return new ResponseEntity<Collection<Restaurant>>(HttpStatus.INTERNAL_ SERVER_ERROR); } return restaurants.size() > 0 ? new ResponseEntity<Collection<Restaurant>> (restaurants, HttpStatus.OK): new ResponseEntity<Collection<Restaurant>> (HttpStatus.NO_CONTENT); }

/** * Pobiera restauracj dla zadanego ID. * <code>http://…/v1/restaurants/{restaurant_id}</code> zwróci restauracj o podanym ID.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

81

* * @param restaurant_id * @return Obiekt restauracji. */ @RequestMapping(value = "/{restaurant_id}", method = RequestMethod.GET) public ResponseEntity<Entity> findById(@PathVariable("restaurant_id") String id) { logger.info(String.format("Wywo anie restaurant-service findById():{} dla {} ", restaurantService.getClass().getName(), id)); id = id.trim(); Entity restaurant; try { restaurant = restaurantService.findById(id); } catch (Exception ex) { logger.log(Level.SEVERE, "Wyj tek w wywo aniu findById REST", ex); return new ResponseEntity<Entity>(HttpStatus.INTERNAL_SERVER_ERROR); } return restaurant != null ? new ResponseEntity<Entity>(restaurant, HttpStatus.OK): new ResponseEntity<Entity>(HttpStatus.NO_CONTENT); } /** * Dodaje restauracj na podstawie okre lonych informacji. * * @param Restauracja * @return Restauracja (bez warto ci null) * @throws RestaurantNotFoundException Je li nie uda o si znale restauracji. */ @RequestMapping(method = RequestMethod.POST) public ResponseEntity<Restaurant> add(@RequestBody RestaurantVO restaurantVO) { logger.info(String.format("Wywo anie restaurant-service add(): %s dla %s", restaurantService.getClass().getName(), restaurantVO.getName()); Restaurant restaurant = new Restaurant(null, null, null); BeanUtils.copyProperties(restaurantVO, restaurant); try { restaurantService.add(restaurant); } catch (Exception ex) { logger.log(Level.WARNING, "Wyj tek w wywo aniu metody add Restaurant REST "+ ex); return new ResponseEntity<Restaurant>(HttpStatus.UNPROCESSABLE_ENTITY); } return new ResponseEntity<Restaurant>(HttpStatus.CREATED); }}

Klasy us ugKlasa RestaurantController wykorzystuje interfejs RestaurantService, który wprowadza ope-racje typu CRUD i przeszukiwanie, zgodnie z poni sz deklaracj :

public interface RestaurantService { public void add(Restaurant restaurant) throws Exception; public void update(Restaurant restaurant) throws Exception; public void delete(String id) throws Exception; public Entity findById(String restaurantId) throws Exception;

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

82

public Collection<Restaurant> findByName(String name) throws Exception; public Collection<Restaurant> findByCriteria(Map<String, ArrayList<String>> name) throws Exception; }

Teraz mo emy zaimplementowa us ug zgodnie z powy szym interfejsem. Dziedziczy onarównie po klasie BaseService, utworzonej w poprzednim rozdziale. Skorzystamy z adnotacji@Service, aby zosta a utworzona us uga:

@Service("restaurantService") public class RestaurantServiceImpl extends BaseService<Restaurant, String> implements RestaurantService { private RestaurantRepository<Restaurant, String> restaurantRepository; @Autowired public RestaurantServiceImpl(RestaurantRepository<Restaurant, String> restaurantRepository) { super(restaurantRepository); this.restaurantRepository = restaurantRepository; } public void add(Restaurant restaurant) throws Exception { if (restaurant.getName() == null || "".equals(restaurant.getName())) { throw new Exception("Nazwa restauracji nie mo e mie warto ci null ani pustej nazwy"); } if (restaurantRepository.containsName(restaurant.getName())) { throw new Exception(String.format("Istnieje ju restauracja o tej nazwie: - %s", restaurant.getName())); } super.add(restaurant); } @Override public Collection<Restaurant> findByName(String name) throws Exception { return restaurantRepository.findByName(name); } @Override public void update(Restaurant restaurant) throws Exception { restaurantRepository.update(restaurant); } @Override public void delete(String id) throws Exception { restaurantRepository.remove(id); } @Override public Entity findById(String restaurantId) throws Exception { return restaurantRepository.get(restaurantId); } @Override public Collection<Restaurant> findByCriteria(Map<String, ArrayList<String>> name) throws Exception { throw new UnsupportedOperationException("Metoda nie zosta a zaimplementowana. "); // Aby zmieni tre generowanych metod, wybierz opcj Tools/Templates. }}

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

83

Klasy repozytoriumInterfejs RestaurantRepository definiuje dwie nowe metody: containsName i findByName.Dziedziczy on tak e po interfejsie Repository:

public interface RestaurantRepository<Restaurant, String> extends Repository<Restaurant, String> { boolean containsName(String name) throws Exception; Collection<Restaurant> findByName(String name) throws Exception; }

Interfejs Repository wprowadza trzy nowe metody: add, remove i update. Dziedziczy on tak epo interfejsie ReadOnlyRepository:

public interface Repository<TE, T> extends ReadOnlyRepository<TE, T> { void add(TE entity); void remove(T id); void update(TE entity);}

Definicja interfejsu ReadOnlyRepository zawiera metody get i getAll, które zwracaj warto cilogiczne, encj i kolekcj encji. Ma to sens, gdy chcesz udost pni jedynie mechanizmy tylkodo odczytu:

public interface ReadOnlyRepository<TE, T> { boolean contains(T id); Entity get(T id); Collection<TE> getAll();}

Framework Spring pozwala na zastosowanie adnotacji @Repository do wskazywania klasyziarna, która pe ni funkcj repozytorium. W przypadku klasy RestaurantRepository stosujemymap (s ownik), która zosta a u yta w miejscu bazy danych. W ten sposób wszystkie encje sprzechowywane w pami ci. W zwi zku z tym po uruchomieniu us ugi w pami ci b d tylkodwie restauracje. Mo emy skorzysta z technologii JPA jako metody utrwalania danych w baziedanych. Tak na ogó post puje si w aplikacjach produkcyjnych:

@Repository("restaurantRepository") public class InMemRestaurantRepository implements RestaurantRepository<Restaurant, String> { private Map<String, Restaurant> entities; public InMemRestaurantRepository() { entities = new HashMap(); Restaurant restaurant = new Restaurant("Restauracja z burgerami","1", null); entities.put("1", restaurant); restaurant = new Restaurant("Restauracja burgerowa", "2", null); entities.put("2", restaurant); } @Override public boolean containsName(String name) {

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

84

try { return this.findByName(name).size() > 0; } catch (Exception ex) { //Obs uga wyj tków } return false; } @Override public void add(Restaurant entity) { entities.put(entity.getId(), entity); } @Override public void remove(String id) { if (entities.containsKey(id)) { entities.remove(id); } } @Override public void update(Restaurant entity) { if (entities.containsKey(entity.getId())) { entities.put(entity.getId(), entity); } } @Override public Collection<Restaurant> findByName(String name) throws Exception { Collection<Restaurant> restaurants = new ArrayList(); int noOfChars = name.length(); entities.forEach((k, v) -> { if (v.getName().toLowerCase().contains(name.subSequence(0, noOfChars))) { restaurants.add(v); } }); return restaurants; } @Override public boolean contains(String id) { throw new UnsupportedOperationException("Metoda nie zosta a zaimplementowana"); // Aby zmieni tre generowanych metod, wybierz opcj Tools/Templates. } @Override public Entity get(String id) { return entities.get(id); } @Override public Collection<Restaurant> getAll() { return entities.values(); }}

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

85

Klasy encjiEncja Restaurant, która dziedziczy po klasie BaseEntity, ma nast puj c definicj :

public class Restaurant extends BaseEntity<String> { private List<Table> tables = new ArrayList<>(); public Restaurant(String name, String id, List<Table> tables) { super(id, name); this.tables = tables; } public void setTables(List<Table> tables) { this.tables = tables; } public List<Table> getTables() {

return tables; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(String.format("id: {}, nazwa: {}, liczba miejsc: {}", this.getId(), this.getName(), this.getCapacity())); return sb.toString(); }}

Skoro w definicjach klas korzystamy z klas POJO, nie musimy tworzy wielu obiektów warto ci. Trzebatylko pami ta , aby nie modyfikowa stanu encji.

Encja Table dziedziczy po encji BaseEntity:

public class Table extends BaseEntity<BigInteger> { private int capacity; public Table(String name, BigInteger id, int capacity) { super(id, name); this.capacity = capacity; } public void setCapacity(int capacity) { this.capacity = capacity; } public int getCapacity() { return capacity; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(String.format("id: {}, nazwa: {}", this.getId(),this.getName())); sb.append(String.format("Stoliki: {}" + Arrays.asList(this.getTables()))); return sb.toString(); } }

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

86

Tre klasy abstrakcyjnej Entity jest przedstawiona poni ej:

public abstract class Entity<T> { T id; String name; public T getId() { return id; } public void setId(T id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}

Klasa abstrakcyjna BaseEntity jest zdefiniowana w poni szy sposób. Dziedziczy ona po klasieEntity:

public abstract class BaseEntity<T> extends Entity<T> { private T id; private boolean isModified; private String name; public BaseEntity(T id, String name) { this.id = id; this.name = name; } public T getId() { return id; } public void setId(T id) { this.id = id; } public boolean isIsModified() { return isModified; } public void setIsModified(boolean isModified) { this.isModified = isModified; } public String getName() { return name; } public void setName(String name) { this.name = name; }}

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

87

Us ugi u ytkowników i rezerwacjiImplementacja RestaurantService stanowi podstaw do dalszej pracy nad implementacj us ugBooking i User. Us uga User mo e udost pnia ko cówk zwi zan z operacjami typu CRUDdla u ytkowników, za us uga Booking, poza operacjami typu CRUD, mo e weryfikowa do-st pno stolików. Ca y kod ród owy znajdziesz na serwerze FTP wydawnictwa Helion.

Rejestracja i wykrywanie us ug (us uga Eureka)Framework Spring Cloud oferuje wzorcowe wsparcie dla us ugi Netflix Eureka, rejestru us ugi narz dzia do ich wykrywania. Wszystkie us ugi, które uruchamiasz, s do czane do us ugiEureka i mog by przez ni wykrywane. Dokonuje si to dzi ki konfiguracji klienta us ugiEureka w projekcie us ugi.

Najpierw musimy doda zale no frameworka Spring Cloud w pliku pom.xml i klas startowwraz z adnotacj @EnableEurekaApplication:

Zale no Mavena: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>

Klasa startowa:Klasa startowa App wywo a automatycznie us ug Eureka tylko i wy cznie dzi ki adnotacji@EnableEurekaApplication:

package com.packtpub.mmj.eureka.service;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublic class App { public static void main(String[] args) { SpringApplication.run(App.class, args); }}

Mo esz te skorzysta ze znacznika <start-class>com.packtpub.mmj.eureka.service.App</start-class> w znaczniku <properties> w pliku pom.xml.

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

88

Konfiguracja Spring:Us uga Eureka wymaga dodania niezb dnej konfiguracji serwerowej do pliku src/main/resources/application.yml:

server: port: ${vcap.application.port:8761} # port HTTPeureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false server: waitTimeInMsWhenSyncEmpty: 0

Ka da z us ug systemu OTRS powinna zawiera konfiguracj klienta Eureka, dzi ki czemumo na nawi za po czenie pomi dzy klientem a serwerem Eureka. Bez tego nie b d mo -liwe wykrywanie i rejestracja us ug.

Klient Eureka: wszystkie Twoje us ugi powinny zawiera nast puj c sekcj konfiguracyjn :

eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/

WykonanieAby sprawdzi nasz kod w praktyce, musisz go najpierw zbudowa . W tym celu wykonamypolecenie clean package dost pne w Mavenie, co doprowadzi do zbudowania archiwum.

Aby uruchomi archiwum z us ug , wykonaj poni sze polecenie:

java -jar target/<plik_uslugi_jar>

Na przyk ad:

java -jar target/restaurant-service.jarjava -jar target/eureka-service.jar

TestowanieAby móc korzysta z testów jednostkowych, dodaj poni sz zale no do pliku pom.xml:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId></dependency>

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

89

Przetestowanie klasy RestaurantController wymaga dodania nast puj cych plików: Klasa RestaurantControllerIntegrationTests, która wykorzystuje adnotacj@SpringApplicationConfiguration, aby zastosowa t sam konfiguracj , co Spring Boot:

@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = RestaurantApp.class) public class RestaurantControllerIntegrationTests extends AbstractRestaurantControllerTests { }

Abstrakcyjna klasa, w której napiszemy nasze testy:

public abstract class AbstractRestaurantControllerTests { protected static final String RESTAURANT = "1"; protected static final String RESTAURANT_NAME = "Restauracja Test"; @Autowired RestaurantController restaurantController; @Test public void validResturantById() { Logger.getGlobal().info("Start testu validResturantById"); ResponseEntity<Entity> restaurant = restaurantController.findById(RESTAURANT); Assert.assertEquals(HttpStatus.OK, restaurant.getStatusCode()); Assert.assertTrue(restaurant.hasBody()); Assert.assertNotNull(restaurant.getBody()); Assert.assertEquals(RESTAURANT, restaurant.getBody().getId()); Assert.assertEquals(RESTAURANT_NAME, restaurant.getBody().getName()); Logger.getGlobal().info("Koniec testu validResturantById"); } @Test public void validResturantByName() { Logger.getGlobal().info("Start testu validResturantByName"); ResponseEntity<Collection<Restaurant>> restaurants =restaurantController. findByName(RESTAURANT_NAME); Logger.getGlobal().info("Wewn trz testu validAccount"); Assert.assertEquals(HttpStatus.OK, restaurants.getStatusCode()); Assert.assertTrue(restaurants.hasBody()); Assert.assertNotNull(restaurants.getBody()); Assert.assertFalse(restaurants.getBody().isEmpty()); Restaurant restaurant = (Restaurant) restaurants.getBody().toArray()[0]; Assert.assertEquals(RESTAURANT, restaurant.getId()); Assert.assertEquals(RESTAURANT_NAME, restaurant.getName()); Logger.getGlobal().info("Koniec testu validResturantByName"); } @Test public void validAdd() { Logger.getGlobal().info("Start testu validAdd"); RestaurantVO restaurant = new RestaurantVO(); restaurant.setId("999"); restaurant.setName("Test Restaurant"); ResponseEntity<Restaurant> restaurants = restaurantController.add(restaurant); Assert.assertEquals(HttpStatus.CREATED, restaurants.getStatusCode()); Logger.getGlobal().info("Koniec testu validAdd"); }}

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

90

Na zako czenie tworzymy klas RestaurantControllerTests, która dziedziczypo utworzonej przed chwil abstrakcyjnej klasie, a tak e tworzy obiekty typówRestaurantService i RestaurantRepository:

public class RestaurantControllerTests extends AbstractRestaurantControllerTests { protected static final Restaurant restaurantStaticInstance = new Restaurant(RESTAURANT, RESTAURANT_NAME, null); protected static class TestRestaurantRepository implements RestaurantRepository<Restaurant, String> { private Map<String, Restaurant> entities; public TestRestaurantRepository() { entities = new HashMap(); Restaurant restaurant = new Restaurant("Restauracja Test", "1", null); entities.put("1", restaurant); restaurant = new Restaurant("Test restauracja", "2", null); entities.put("2", restaurant); } @Override public boolean containsName(String name) { try { return this.findByName(name).size() > 0; } catch (Exception ex) { // Obs uga wyj tku } return false; } @Override public void add(Restaurant entity) { entities.put(entity.getId(), entity); } @Override public void remove(String id) { if (entities.containsKey(id)) { entities.remove(id); } } @Override public void update(Restaurant entity) { if (entities.containsKey(entity.getId())) { entities.put(entity.getId(), entity); } } @Override public Collection<Restaurant> findByName(String name) throws Exception { Collection<Restaurant> restaurants = new ArrayList(); int noOfChars = name.length(); entities.forEach((k, v) -> { if (v.getName().toLowerCase().contains(name.subSequence(0, noOfChars))) { restaurants.add(v); } });

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Rozdzia 4. • Implementujemy mikrous ug

91

return restaurants; } @Override public boolean contains(String id) { throw new UnsupportedOperationException("Metoda nie zosta a zaimplementowana."); // Aby zmieni tre generowanych metod, wybierz opcj Tools/Templates. } @Override public Entity get(String id) { return entities.get(id); } @Override public Collection<Restaurant> getAll() { return entities.values(); } } protected TestRestaurantRepository testRestaurantRepository =new TestRestaurantRepository(); protected RestaurantService restaurantService = new RestaurantServiceImpl(testRestaurantRepository); @Before public void setup() { restaurantController = new RestaurantController(restaurantService); }}

ród a Bhakti Mehta, REST. Najlepsze praktyki i wzorce w j zyku Java, Helion, Gliwice 2015 Spring Cloud: http://cloud.spring.io Netflix Eureka: https://github.com/netflix/eureka

PodsumowanieW tym rozdziale zapozna e si z praktycznym zastosowaniem projektu sterowanego modelemdziedziny w implementacji mikrous ugi. Po uruchomieniu demonstracyjnej aplikacji wiesz ju ,jak tworzy , wdra a i testowa mikrous ugi niezale nie. Z pewno ci jeste w stanie tworzymikrous ugi za pomoc Spring Cloud. Dowiedzia e si tak e, jak zastosowa us ug Eureka,aby rejestrowa i wykrywa mikrous ugi dzi ki technologii Spring Cloud.

W nast pnym rozdziale dowiesz si , jak wdra a mikrous ugi w kontenerach, takich jak Docker.Nauczysz si tak e testowa mikrous ugi za pomoc klientów typu REST pisanych w Javiei innych narz dzi.

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Mikrous ugi w Javie. Poradnik eksperta

92

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Skorowidz

Aadnotacja

@ComponentScan, 39@Configuration, 38@Controller, 35, 79@EnableAutoConfiguration, 38@EnableCircuitBreaker, 101@EnableDiscoveryClient, 98@EnableEurekaApplication, 87@EnableWebMvc, 38@EnableZuulProxy, 98@HystrixCommand, 101@PathVariable, 36@Repository, 83@RequestMapping, 35@RequestParam, 36@ResponseBody, 35, 79@RestController, 35@SpringBootApplication, 38

agregat, 58, 59Amazon, 17, 51Amazon Machine Image, 193Amazon Web Services, 193AMI, 193Aminator, 194AMQP, 103AngularJS, 150, 151, 152

dyrektywa, 154zakres, 153

Ant, 30Apache Cassandra, 93

Apache Mesos, 198API, 20

brama, Patrz: brama APImatematyczne, 34wersja, 80

API gateway, Patrz: brama APIaplikacja

agentowa, 126agentowe, 127implementacja, 185jednostronicowa, 154, 155monolityczna, Patrz: architektura

monolitycznanatywna, 126, 127produkcyjna, 83publiczna, 127webowa, 126

strona domowa, 155Archaius, 197architektura

bezkontenerowa, 30mikrous ug, 17, 93, 186, 187, 191, 207monolityczna, 17, 18, 21, 186, 188, 207

kod, 23metodyka zwinna, 22skalowalno , 20wdra anie, 21, 22z us ugami, 18

wielowarstwowa, 54zorientowana na us ugi, Patrz: SOA

artefakt, 25, 55atak brute force, 129Atlas, 195

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Skorowidz

212

autoryzacja, 119, 120AWS, 193

Bbaza danych, 18, 60, 76, 78, 191, 203

wspó dzielenie, 192zarz dzanie, Patrz: MDM

biblioteka, 55Angular, 151Netflix Spectator, 195

boot2docker, 27Bower, 177brama API, 19

CCamel, 192certyfikat, 119, 120classpath, Patrz: cie ka klasCloud Foundtry, 194Cockcroft Adrian, 16, 190CRUD, 76, 81

DDDD, 51, 52, 53, 57, 68, 75, 188destylacja, 63, 68Docker, 25, 26, 106, 202

architektura, 27daemon, 27dziennik, 202dziennik obrazu, 115klient, 27kontener, 28

zale ny, 114zarz dzanie, Patrz: Docker Composeczenie z Mavenem, 107, 108, 110, 113

mened er kontenerów, Patrz: DockerCompose

obraz, 28, 113, 114rejestr lokalny, 114uruchamianie, 27

Docker Compose, 113, 115dziennik, 202

Docker Hub, 27Docker Toolbox, 106DOM, 151Domain-Driven Design, Patrz: DDDdostawca, 152

drzewo dokumentu, Patrz: DOMdyrektywa links, 114dziennik logów, 201

EeBay, 17Edda, 196, 197Elasticsearch, 203, 204encja, 55, 56, 57, 76, 77, 83, 124

implementacja, 69kolekcja, 83korze , Patrz: korzeprzechowywanie w pami ci, 83

Enterprise Service Bus, Patrz: ESBESB, 16Etsy, 20Eureka, Patrz: Netflix EurekaEvans Eric, 52

Ffabryka, 61FeignClient, 95Fenzo, 198FIDO, 191, 198, 199Fielding Roy, 35filtr, 153, 166format

jar, 31JSON, 78

formularz, 171wyszukiwania, 167

funkcjaMath.pow, 35Math.sqrt, 35

GGancarz Mike, 16, 187Google Computer Engine, 194Gradle, 30, 47grant

danych uwierzytelniaj cych klienta, 130, 137has a w a ciciela zasobu, 130, 135, 136, 146kodu autoryzacji, 130, 142niejawny, 130, 134, 145uprawnie klienckich, 146

Groupon, 17

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Skorowidz

213

Hhistogram czasu odpowiedzi, 190historyjka u ytkownika, 22HTTP, 117, 194

nag ówek, 80HTTPS, 118Hudson, 65Hystrix, Patrz: Netflix HystrixHystrix Dashboard, 94

IIce, 198identyfikator, 56integracja ci g a, 63, 64, 65Interface Segregation Principle, Patrz: ISPinterfejs

cname, 26DiscoveryEnabledNIWSServerList, 95IPing, 95j dra systemu operacyjnego, 26u ytkownika, 20, 23, 27, 54

invariant, Patrz: niezmiennikISP, 69

Jj dro wspó dzielone, 63, 66Jenkins, 24, 188Jenkins CI, 65j zyk modelowania zunifikowany, Patrz: UML

KKibana, 204, 206klasa

BaseEntity, 85DiscoveryClient, 95Entity, 86POJO, 85resource, 35startowa, 87cie ka, Patrz: cie ka klas

klientidentyfikator, 128poufny, 125profil, 126

publiczny, 125uwierzytelnienie, 128

klucz, 33dost powy, 125g ówny, 56magazyn, Patrz: magazyn kluczyobcego, 59

kodscalanie, 65testowanie, 65

kolejka komunikatów, 103kontekst, 64

mapa, Patrz: mapa kontekstuograniczenie, 63, 64

kontener, 25, 106Docker, Patrz: Dockerintermodalny, 25oprogramowania, 25zale ny, 114

kontroler, 150, 153, 164, 165REST, 35

ko cówka, 78, 129, 159autoryzacji, 129prefiks v1, 80przekierowania, 129tokena, 129wywo anie, 207

korze , 59

Llatencja, 190logika

aplikacji, 18, 55, 150biznesowa, 18, 55, 150

logowanie, 120, 122, 169, 170, 191rejestrowanie zdarze , 191

Logstash, 203, 205Long Josh, 31

Mmagazyn kluczy, 33, 119magistrala us ug korporacyjna, Patrz: ESBma pa

Chaos, 196Conformity, 196Janitor, 196Security, 196

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Skorowidz

214

mapa kontekstu, 63, 65Master Data Management, Patrz: MDMmaszyna wirtualna, Patrz: VM

Javy, Patrz: JVMMaven, 29, 30, 33, 39, 47, 87, 88, 103, 105, 107,

108, 110, 113metoda

awaryjna, 102config, 152fabryka, 153get, 83GET, 78getAll, 83getLocalServiceInstance, 95main, 34, 151POST, 78run, 152sqrt, 37sta a, 152us uga, 153warto , 152

middleware, Patrz: oprogramowaniepo rednicz ce

mikrous uga, 16, 17, 18, 20, 187, Patrz te : us ugadebugowanie, 207granice transakcji, 192monitorowanie, 190, 191

w czasie rzeczywistym, 191skalowanie, 20, Patrz te : skalowanietestowanie, 22, 23, 24tworzenie, 24, 75, 76, 193wdra anie, 21, 22, 23, 24, 93

Docker, 25, 28wielko , 187zale no cykliczna, 207, 208

model, 150dziedziny, 52, 57, 69, 78

implementacja, 52integralno , 63

korporacyjny, 63refaktoring, 64widoku, 150

modu , 63, 151MVC, 150MVVM, 150

Nnanous uga, 187NetBeans, 45, 46, 47NetBeans IDE, 29Netflix, 23, 93Netflix Atlas, 191, 195Netflix Edda, 196, 197Netflix Eureka, 76, 87, 88, 94, 194Netflix Hystrix, 94, 101, 102, 103, 194Netflix Nebula, 193Netflix OSS, 193Netflix Ribbon, 94, 95, 194Netflix Spectator, 195Netflix Turbine, 94, 103, 105niezmiennik, 59Node.js, 172, 177npm, 172, 177

OOAuth, 120

grant autoryzacji, Patrz: grantimplementacja, 138ko cówka, 129specyfikacja, 122wersja, 121zastosowania, 121

obiektcykl ycia, 58, 60dziedziny, 60, 79kolekcja, 59repozytorium, 78separacja, 63specjalizowany, 152us ug, 57usuwanie, 59warto ci, 56, 57, 77

Object-Oriented Programming, Patrz: OOPobs uga b dów, 102ograniczenie, 59OOP, 57Open Source Software Center, Patrz: OSSoprogramowanie po rednicz ce, 16OSS, 93

Poleć książkęKup książkę

Page 29: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Skorowidz

215

Pplik

app.js, 159, 167application.yml, 95, 98, 107index.html, 151, 156JAR, 33, 34pom.xml, 25, 31, 87, 88, 108

podmodel, 63POJO, 34, 85polecenie

clean package, 88logs, 202mvn clean, 40

Postman, 40Postman Chrome, 40potokowanie, 203programowanie

sterowane testami, Patrz: TDDzorientowane obiektowo, Patrz: OOP

projektowanie sterowane modelem dziedziny,Patrz: DDD

protokóSSL, Patrz: SSLAMQP, Patrz: AMQPHTTP, 34, Patrz: HTTPSecure Socket Layer, Patrz: SSLSOAP, Patrz: SOAPSSL, 33TCP, 194TLS, Patrz: TLSTransport Layer Security, Patrz: TLSUDP, 194

przestrze nazw, 26Pujals Tony, 17

QQuora, 120

logowanie, 122, 125

RRabbitMQ, 103regu a segregacji interfejsów, Patrz: ISPrejestr us ug, 76, 87repozytorium, 60, 78

artifacts, 25implementacja, 70

REST, 35, Patrz te : us uga RESTRestTemplate, 95Ribbon, Patrz: Netflix Ribbonrównowa enie obci enia, 94, 95

po stronie klienta, 95po stronie serwera, 98

SScumblr, 191, 198Security Monkey, 191, 198, Patrz te : ma paService-Oriented Architecture, Patrz: SOAserwer

Apache Tomcat, 30, 33autoryzacji, 124, 125, 128, 129Eureka, 95graniczny, 98, 99, 159, 195Jetty, 30, 33po rednicz cy, 98, 195proxy, Patrz: serwer po rednicz cywirtualizowany, 106zasobów, 124

Simian Army, 195skalowanie

dwuwymiarowe, 20jednowymiarowe, 20platformowe, 20produktu, 20

sniffer, 117SOA, 16, 187SOAP, 16SPA, 154, 155Spinnaker, 193, 194Spring, 83Spring Boot, 29, 30

konfiguracja, 30wersja, 31

Spring Cloud, 77, 87, 94, 98, 193klient, 95

Spring Cloud Ribbon, 95Spring Initializer, 30Spring Security, 138SSL, 118, 119stos ELK, 202

Elasticsearch, 203, 204Kibana, 204, 206konfiguracja, 204Logstash, 203, 205

system plików, 60

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa

Skorowidz

216

cie kaklas, 33niezale na, 63, 67URI, 36

TTeamCity, 24, 65, 188technologia

AngularJS, Patrz: AngularJSApache Cassandra, Patrz: Apache CassandraJPA, Patrz: JPANode.js, Patrz: Node.js

testend-to-end, 151, 189, 190integracyjny, 111, 189jednostkowy, 88, 151, 190

TLS, 118, 129token, 124

dost powy, 124, 129, 131ko cówka, Patrz: ko cówka tokenaod wie enia, 124uwierzytelniania, 131

trasowanie, 154

UUI, Patrz: interfejs u ytkownikaUI-Router, 154UML, 53, 65Unified Model Language, Patrz: UMLus uga, 77, Patrz te : mikrous uga

$injector, 152$log, 152Docker Hub, 113dzia aj ca transakcyjnie, 192implementacja, 72Monkey, Patrz: ma paotwartego hosta, 63, 68rejestr, Patrz: rejestr us ugREST, 21, 30, 34, 55, 78, 189

ko cówka, Patrz: ko cówkatestowanie, 30

tworzenie, 58, 68, 161uwierzytelnienie, 119, 120, 169u ytkownik ko cowy, 124

VValue Object, Patrz: obiekt warto ciVector, 197VirtualBox, 27, 106VM, 25VO, Patrz: obiekt warto ci

Wwarstwa

aplikacji, 54, 55, 58biznesowa, 58DAO, 18dziedziny, 54, 55, 58infrastruktury, 54, 55ograniczaj ca przek amania, 63, 67prezentacji, 18, 54, 150

widok, 150wstrzykiwanie zale no ci, 152wy cznik automatyczny, 101wyra enie regularne, 37wzorzec

fabryki, 62fasady, 67klient-dostawca, 63, 66konformisty, 63, 67projektowy

MVC, Patrz: MVCMVVM, Patrz: MVVM

wstrzykiwania zale no ci, 152Wy cznik Automatyczny, 101

ZZuul Server, 94, 98, 119, 195zwi zek, 59

danie GET, 34, 35

Poleć książkęKup książkę

Page 32: Tytuł oryginału: Mastering Microservices with JavaOAuth 2.0 121 Specyfikacja OAuth 2.0 — krótko i na temat 122 Implementacja OAuth z wykorzystaniem Spring Security 138 ½ródïa