Wybrane działy Informatyki Stosowanej Java Enterprise Edition. WebServices. Język XML. Serwer aplikacji GlassFish. Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl 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 Aplikacja Bilet online Komponent PKP Komponent ZTM Komponent MZA 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 Serwer odbiorcy usług Protokół Serwer dostawcy usług Usługa Object Request Broker organizuje komunikację pomiędzy serwerami
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 Schemat XSD Walidacja Błąd walidacji 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