Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz.pl
Serwer aplikacji Serwer aplikacji to: Serwer wchodzący w skład sieci komputerowej, przeznaczony do zdalnego uruchamiania i użytkowania aplikacji. Zestaw oprogramowania (platforma) wspierająca programistę / developera przy tworzeniu aplikacji. Umożliwia oddzielenie logiki biznesowej od usług dostarczanych przez producenta platformy (bezpieczeństwo, zarządzanie transakcjami, skalowalność, czy też dostęp do baz danych). Do serwerów aplikacji należą m.in.: JBoss, BEA WebLogic, IBM WebSphere oraz platforma.net Microsoftu. Program działający na zdalnej maszynie obsługujący żądania kierowane do aplikacji, do której dostęp zapewnia. Użytkownik łączy się za pośrednictwem przeglądarki internetowej, kieruje żądanie do wybranej aplikacji, a całość operacji odbywa się po stronie usługodawcy serwera.
Architektura WWW Rysunek: Architektura
Realizacja aplikacji WWW wymaga zastosowania rozszerzonej architektury WWW, w skład której wchodzą trzy programowe warstwy funkcjonalne: warstwa klienta warstwa aplikacji warstwa danych
Architektura serwerów aplikacji Kluczowym składnikiem rozszerzonej architektury WWW, umożliwiającym wykonywanie aplikacji WWW, jest serwer aplikacji. Serwer aplikacji jest oprogramowaniem o charakterze systemowym, które odpowiada m.in. za obsługę komunikacji z warstwą klienta i warstwą danych. Dzięki temu programista tworzący aplikacje WWW nie musi samodzielnie implementować kodu obsługi protokołu HTTP (z klientem HTTP) ani kodu obsługi komunikacji SQL (z serwerem bazy danych).
1 Warstwa kliencka aplikacje klienckie aplety 2 Warstwa webowa Java Servlet Java Server Pages Java Server Faces 3 Warstwa serwerowa Enterprise Java Beans 4 Wymiana danych pomiędzy warstwami
Architektura czterowarstwowa Architektura czterowarstwowa (4-tier architecture) zakłada, że komponenty aplikacji WWW dzielą się na dwie grupy: komponenty logiki prezentacji i komponenty logiki biznesowej.
Architektura Model-View-Controller Architektura Model-View-Controller zakłada, że komponenty aplikacji WWW dzielą się na trzy grupy: komponenty sterujące (controller), komponenty prezentacji (view) i komponenty modelu (model).
Rodzaje serwerów aplikacji Apache Tomcat GlassFish Bea Weblogic ZOPE (Z Object Publishing Environment) Windows 2003 Server.Net
Usługi serwerów aplikacji pule zasobów (na przykład pule bazy danych i pule obiektów) rozproszone zarządzanie transakcjami asynchroniczna komunikacja programowa, zazwyczaj poprzez kolejkowanie wiadomości dokładnie zsynchronizowany model aktywacji obiektu automatyczne interfejsy usług sieci Web XML umożliwiające dostęp do obiektów biznesowych usługi wykrywania awarii i stanu aplikacji zintegrowane zabezpieczenia
Klienci serwerów aplikacji 1 Klient HTML: statyczny brak lub minimalna logika porozumiewa się za pośrednictwem HTTP 2 Klient Java aplet java+html własna logika porozumiewa się za pośrednictwem IIOP lub JRMI
Zalety serwerów aplikacji niski koszt utrzymania klienta obsługa standardów otwartych szerokie możliwości generowania i publikowania informacji
Wymagania stawiane serwerom aplikacji integralność transakcji skalowalność, wydajność stabilność otwartość (w sensie obsługi standardów) bezpieczeństwo ochrona inwestycji
Cechy serwerów aplikacji umożliwia tworzenie i obsługę aplikacji napisanych m.in. w C, C++, Javie obsługuje wydajnie transakcyjne relacyjne bazy danych, jest niezależny od producenta bazy oferuje dużą skalowalność (obsługa klastrów) zapewnia zintegrowane, zcentralizowane zarządzanie obsługuje standardy: HTTP, HTML, CGI, NSAPI (Netscape), ISAPI (Microsoft), Java zawiera środowisko do tworzenia, testowania, wdrażania i zarządzania aplikacjami
Pliki konfiguracyjne w katalogu conf server.xml tomcat-users.xml web.xml
Pliki konfiguracyjne w katalogu logs catalina.2014-10-26.log localhost access log.2014-10-26
Java Enterprise Edition Java Enterprise Edition (w skrócie J EE) jest standardem tworzenia zorientowanych na usługi aplikacji biznesowych (Service Oriented Architecture), utworzonym na bazie języka Java i technologii Java 2 Standard Edition. W praktyce jest to pewien zbiór (pakiet) różnorodnych technologii i frameworków, który umożliwia tworzenie aplikacji.
Aplikacje webowe korzystają z grupy tych samych elementów, z których korzystają aplikacje biznesowe. Jednak formalnie aplikacje webowe powinny korzystać jedynie z: JavaServer Faces JavaServer Pages JavaServer Pages Standard Tag Library Java Servlet Jednym z najważniejszych elementów, które odróżniają aplikacje J EE od innych, jest konieczność ich uruchamiania na specjalnych serwerach aplikacji. Do aplikacji biznesowych często wykorzystywany jest serwer GlassFish, który oczywiście obsługuje także technologię EJB.
Układ katalogów projektu w Netbeansie Struktura stworzonego za pomocą Netbeansa projektu jest następująca: 1 Web Pages META-INF WEB-INF 2 Source Packages 3 Libraries
Serwlety Serwlet w Javie jest klasą, która rozszerza możliwości serwera aplikacji. Praktycznie jedynym wymaganiem jest, aby serwlet działał w trybie żądanie - odpowiedź. Serwlet wykonuje się w środowisku serwera WWW (aplikacji) i nie może funkcjonować autonomicznie. Serwer WWW musi zapewniać obsługę serwletów Java.
Hierarchia dziedziczenia Interfejs Servlet Abstrakcyjna klasa GenericServlet Klasa HttpServlet
Metody do* doget() dopost() dohead() dotrace() doput() dodelete() dooptions() doconnect()
Interfejs HttpServletRequest Najbardziej istotne metody interfejsu HttpServletRequest: Object getparameter(string nazwa) Enumeration<String> getparameternames() String getremoteuser() Cookie[] getcookies() String getheader(string nazwa)
int getintheader(string nazwa) long getdataheader(string nazwa) String getcontextpath() String getservletpath() String getpathinfo()
Interfejs HttpServletResponse Najbardziej istotne operacje, które będziemy wykonywać przesyłając odpowiedź klientowi (dzięki interfejsowi HttpServletRequest): przesyłanie odpowiedzi w postaci danych tekstowych lub binarnych tworzenie i przesyłanie ciasteczek dodawanie do odpowiedzi dowolnych nagłówków przekierowywanie żadań lub przesyłanie kodów błędu
Życie serwletu W chwili uruchomienia aplikacji serwer aplikacji podejmuje następujące działania: załadowanie klasy serwletu utworzenie instancji serwletu wywołanie metody init() wywołanie metody service()
Struktura serwletu protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); }
protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } public String getservletinfo() { return "Short description"; }
Zalety i wady serwletu 1 Zalety: dostępne funkcje do obsługi typowych czynności mechanizm stosunkowo ustandaryzowany mechanizm uniwersalny i łatwo rozszerzalny stosunkowo bezpieczne 2 Wady: w bardziej złożonych środowiskach wydajność może pozostawiać wiele do życzenia (wymagania na RAM, garbage collection) występują istotne różnice pomiędzy różnymi środowiskami bazującymi na serwletach (np. por. - Tomcat, Oracle App. Server, IBM Websphere)