Wybrane działy Informatyki Stosowanej Java Enterprise Edition WebServices Serwer aplikacji GlassFish Dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki
Aplikacje rozproszone Rozproszone dane Rozproszeni użytkownicy Rozproszone obliczenia
Rozproszone dane Wrocław Warszawa Kraków Dane mogą znajdować się na wielu serwerach Dane mogą być heterogeniczne (różnorodne)
Rozproszeni użytkownicy System informatyczny Użytkownicy łączą się zdalnie z zasobami i korzystają z usług rozproszonych
Rozproszone obliczenia Serwery mogą udostępniać swoją moc obliczeniową w zależności od potrzeb użytkowników lub aplikacji Strona WWW Aplikacja desktop Servlet Usługa sieciowa WebService
Cechy aplikacji rozproszonych
Platforma Java Enterprise Edition Platforma do tworzenia współczesnych skalowalnych rozproszonych wieloplatformowych aplikacji biznesowych Wykorzystuje język Java jako podstawowy Celem powstania platformy była integracja usług programowych oraz ułatwienie budowy skomplikowanych aplikacji sieciowych Dawniej znana jako plaftorma J2EE
Architektura Java EE
Warstwa klienta (Client tier) Aplikacje pracujące na komputerze klienta Aplikacje desktopowe Aplikacje WWW działające w przeglądarce internetowej (HTML + JavaScript + Aplety + etc.) Realizowana funkcjonalność: Interfejs użytkownika GUI Komunikacja z warstwą serwera: zlecanie zadań oraz pobieranie wyników przetwarzania danych Brak bezpośredniej komunikacji z bazą danych Nie są przechowywane / przetwarzane dane poufne
Warstwa serwera: Java EE Server Aplikacje dynamiczne działające na serwerze: Aplikacje typu serwlet Dynamiczne strony JSP Strony JSF (połączenie JSP + serwletów) Komponenty EJB (Enterprise Java Beans) klasy obiektów w Javie, które mogą być wykorzystywane w aplikacjach rozproszonych Warstwa realizuje algorytmy przetwarzania danych (tzw. logika biznesowa aplikacji )
Warstwa danych: Database server Oprogramowanie realizujące funkcje przechowania danych, ich przetwarzania oraz utrwalania w pamięci zewnętrznej Najczęściej tę rolę pełni relacyjna baza danych: Dane są przechowywane w tabelach Język programowania SQL Interfejs JDBC (Java Database Connectivity) Pośrednictwo w komunikacji pomiędzy BD a kodem w warstwie biznesowej
Idea programowania komponentowego Aplikacje klasyczne (lokalne) Program Aplikacje sieciowe Program metoda() Biblioteka Biblioteka Biblioteka metoda() Usługa Komponent Komponent
Idea programowania komponentowego (c.d.) Funkcjonalność aplikacji sieciowych może wykorzystywać komponenty zdalne Są one umieszczane na serwerach aplikacji w sieci Internet Aplikacja może wykorzystywać komponenty (klasy) lub wołać zdalne metody (usługi) Zagadnienia: Opis komponentów Opis metod, parametrów oraz zwracanego wyniku Mechanizm zdalnego wywołania metody (RPC) Format wymiany danych
Komponenty aplikacji Java EE Komponent jednostka realizująca określone zadanie oraz będąca w stanie komunikować się z innymi komponentami Komponenty JEE: Aplikacje klienckie oraz aplety Serwlety, Strony dynamiczne JSP, JSF WebServices Komponenty Java Beans (EJB) Wszystkie komponenty są wykonywane na serwerze Java Server
Technologia Enterprise Java Beans EJB technologia komponentów pracujących po stronie serwera Komponenty (ang. Beans) są samodzielnymi klockami z których można budować złożone aplikacje Komponenty wymagają tzw. środowiska uruchomieniowego (kontenera) tj. aplikacji zewnętrznej: Dostarczającej interfejs wejścia wyjścia Zapewniająca bezpieczeństwo, komunikacje oraz transakcje
Rodzaje ziaren EJB Bezstanowe: Stan sesji nie jest zapamiętywany Obsługa anonimowych klientów Wysoka skalowalność Stanowe Każdy klient jest obsługiwany osobno Dane klienta są przechowywane na serwerze
Koncepcja działania EJB Użytkownik Aplikacja Bilet online Komponent wyszukiwarka połączeń Komponent e-bilet Komponent konto użytkownika Komponent rozliczenia Warstwa prezentacji Warstwa logiki aplikacji
Osadzanie EJB na serwerze Komponenty EJB są osadzane wewnątrz kontenerów Kontener jest częścią platformy JEE i działa na JEE Server
Kiedy EJB ma zastosowanie Głównym atutem technologii jest skalowalność aplikacji: Przy zwiększeniu obciążenia łatwo można dodać kolejny serwer do systemu i umieścić na nim część komponentów Kosztem takiego rozwiązania jest wzmożona komunikacja sieciowa Kiedy klienci aplikacji rozproszonej są różnorodni: Przeglądarki internetowe Aplikacje desktopowe Inne usługi internetowe
Server aplikacji GlassFish Serwer aplikacji platforma zapewniająca funkcjonowanie, programowanie, dystrybucję oraz wspieranie sieciowych aplikacji przemysłowych GlassFish Open Source Server wersja niekomercyjna otwarta GlassFish Enterprise Server wsparcie przez producenta, większa skalowalność
Funkcjonalność GlassFish Wsparcie języków programowania: Java, Ruby, PHP, Python etc. Modułowa struktura Skalowalność aplikacji Wsparcie wirtualizacji Obsługa baz danych JDBC Rozproszone przetwarzanie danych: Klastry serwerów, Replikacja, zapewnienie High Availability, wsparcie Application Deployment
Panel administrowania GlassFish
Klastry GlassFish
WebServices usługi sieciowe WS współczesna technologia realizacji rozproszonych usług sieciowych Założenia: WS - samodzielny komponent programowy WS potrafi się samodokumentować tj. programista nie musi deklarować osobno kodu a interfejsu usługi WS jest rejestrowane w rejestrze usług Aplikacja konsumencka odkrywa w sieci komponent WS i może korzystać z jego usług w trybie zdalnego wywołania
Składniki technologii WebServices UDDI rejestr usług XML format przekazy wania danych SOAP protokół wymiany danych WSDL opis usług
Rejestr usług UDDI
Rejestr UDDI Universal Description, Discovery, and Integration Specjalizowana baza danych przechowująca informacje o WS dostępnych w sieci UDDI Komponent Klient
Protokół SOAP SOAP protokół oparty na języku XML SOAP służy od przekazywania wywołań zdalnych komponentów WS: Przekazywanie żądania zdalnego wywołania usługi Przekazywanie wyników wywołania usługi SOAP współpracuje z wieloma protokołami transportowymi (najczęściej HTTP)
Przykładowe żądanie SOAP
Przykładowa odpowiedź SOAP
Język WSDL (Web Service Description Language)
Przykład dokumentu WSDL
Interfejsy REST REST (ang. Representational State Transfer) współczesny standard tworzenia usług sieciowych Oparty jest o koncepcję wykonania operacji na danych w postaci linków URL Zasób (ang. Resource) - obiekt w usłudze sieciowej Np. Bilet, Pasażer, Pojazd, Rozkład, Miasto etc. Operacje na zasobach są wykonywane za pomocą poleceń HTTP: GET, POST, PUT, DELETE
Interfejsy REST (c.d.) Operacja Wywołanie Opis POST POST /Ticket/12345 Utworzenie nowego biletu GET GET /Ticket/12345 Pobranie biletu o identyfikatorze 12345 PUT PUT /Ticket/12345 Edycja biletu o identyfikatorze 12345 DELETE DELETE /Ticket/12345 Usunięcie biletu
Interfejsy REST (c.d.) Obecnie stanowią jedną z najbardziej popularnych technologii tworzenia rozproszonych usług sieciowych Są nowoczesną technologią, która nie pociąga za sobą konieczności korzystania z przestarzałych protokołów i nie posiada historycznych ograniczeń Szybkie i lakoniczne protokoły Prostsze programowanie Bardzo szybko się rozwijają