Wybrane działy Informatyki Stosowanej Java Enterprise Edition. WebServices. Język XML. Serwer aplikacji GlassFish. Dr inż. Andrzej Czerepicki [email protected] http://www2.wt.pw.edu.pl/~a.czerepicki Aplikacje rozproszone • Rozproszone dane • Rozproszone obliczenia • Rozproszeni użytkownicy Aplikacje rozproszone (c.d.) • Rozproszenie danych • Dane mogą znajdować się na wielu serwerach • Dane mogą być heterogeniczne (różnorodne) • Rozproszenie obliczeń • Serwery mogą udostępniać swoją moc obliczeniową w zależności od potrzeb użytkowników lub aplikacji • Rozproszenie użytkowników • Użytkownicy łączą się zdalnie z zasobami i korzystają z usług rozproszonych 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 • Znana również jako J2EE (nazwa jest przestarzała) • W roku 2017 planowana jest wersja Java EE 8 Składniki JEE Architektura Java EE Architektura Java EE (inny przekrój) 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 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, JPS, JSF • Komponenty Java Beans (EJB) • Wszystkie komponenty są wykonywane na serwerze Java Server Technologia Enterprise Java Beans • EJB realizuje logikę biznesową aplikacji • Logika prezentacji musi być zrealizowana przez zewnętrzne komponenty 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 Koncepcja działania EJB Komponent „PKP” Komponent „MZA” Aplikacja „Bilet online” Komponent „ZTM” Bank … 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 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 Osadzanie EJB na serwerze • Komponenty EJB są osadzane wewnątrz kontenerów • Kontener jest częścią platformy JEE i działa na JEE Server Interfejs pomocniczy tłumaczy obiekt na opis uniwersalny Protokół Usługa Object Request Broker organizuje komunikację pomiędzy serwerami Serwer odbiorcy usług Serwer dostawcy usług Porównanie EJB z innymi technologiami rozproszonych obiektów 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 HighAvailability, 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 Rejestr usług UDDI Rejestr UDDI • Specjalizowana baza danych przechowująca informacje o WS dostępnych w sieci 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 Język XML • eXtensible Markup Language – uniwersalny niezależny od platformy strukturalny język reprezentacji dokumentów lub danych • Uniwersalny: może być stosowany do wymiany danych pomiędzy dowolnymi aplikacjami • Strukturalny: zawiera dane oraz jednocześnie opisuje ich strukturę • Niezależny od platformy: jest stosowany w różnych systemach operacyjnych Przykładowy dokument XML Ogólna struktura dokumentu XML <xml> <obiekt param1="value1" param2="value2" …> <obiekt_włożony> … </obiekt_włożony> … </obiekt> … </xml> Schemat dokumentu XML • Dokument XML może posiadać tzw. schemat – opis pól oraz ich typów Błąd walidacji Schemat XSD Walidacja Dokument XML Sukces Zastosowanie XML • Opis zasobów • Uniwersalny sposób na konfigurację aplikacji komputerowej, usługi sieciowej, etc. Przykład: plik Web.XML serwera Apache, lub pliki WSDL konfiguracji usług sieciowych WebService • Elektroniczna wymiana danych (EDI) • Format przekazywania danych pomiędzy systemami B2B, np. deklaracje podatkowe • Protokoły komunikacyjne • Ściśle sformalizowane podzbiory XML stosowane do przekazywania komunikatów pomiędzy elementami rozproszonego systemu informatycznego, np. SOAP • Etc. etc. Obsługa formatu XML w aplikacjach komputerowych • Zapis pliku XML jest prostym zadaniem dla programisty • Odczyt pliku XML jest bardziej złożonym zadaniem Aplikacja Aplikacja ? Przesłanie dokumentu Biblioteka JAXB • Java Architecture for XML Binding – standardowa (od v. 6) biblioteka Javy do przetwarzania dokumentów XML • Podstawowe pojęcia: • Marshalling – zapis obiektu do XML • Unmarshalling – odczyt obiektu z XML • Referencje: • import javax.xml.bind.annotation.XmlAttribute; • import javax.xml.bind.annotation.XmlElement; • import javax.xml.bind.annotation.XmlRootElement; Stosowanie atrybutów JAXB Konstruktor bez parametrów Zapis obiektu do pliku XML Odczyt obiektu z pliku XML Document Object Model (DOM) • DOM – uniwersalny standard modelowania dokumentów XML w pamięci komputera • Znaczniki XML są reprezentowane w postaci wierzchołków drzewa • Hierarchia znaczników XML jest reprezentowana za pomocą krawędzi drzewa • DOM API – biblioteka wspomagająca tworzenie oraz przeszukiwanie drzew DOM • XPath – język do wykonania zaawansowanych zapytań w DOM