Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Przegląd technologii J2EE Jakub Kostynowicz Kamil Rembalski.

Podobne prezentacje


Prezentacja na temat: "Przegląd technologii J2EE Jakub Kostynowicz Kamil Rembalski."— Zapis prezentacji:

1 Przegląd technologii J2EE Jakub Kostynowicz Kamil Rembalski

2 Struktura J2EE

3 Aplety (Applets) Programy java działające po stronie klienta. Wykorzystują maszynę wirtualną zawarta w przeglądarce. Przegladarka wywołuje kolejno metody init(), start(), stop(), destroy()

4 Aplety (Applets) Mogą zawierać klienty sieciowe - Sockety, RMI, CORBA. Mogą utrzymywać łączność jedynie z serwerem, z którego zostały pobrane. Konkurencja: ActiveX, Macromedia Flash

5 Serwlety (Servlets) Coś podobnego do programów CGI Dziedziczą po klasie HttpServlet Metody doXXX() wywoływane przez kontener serwletów po otrzymaniu odpowiedniego żądania Metody init() i destroy(), inicjujące i niszczące serwlet.

6 Serwlety (Servlets) Klasy HttpServletRequest i HttpServletResponse: dostęp do nagłówków Http, parametramów żądań, cookies, sesji, IP użytkownika wywołującego serwlet oraz metody autentykacji i informacji o rolach użytkownika

7 Koncept: Deskryptory Pliki xml, pozwalające programiście opisać aplikację. Przekazywanie parametrów inicjacyjnych dla serwletów, wiązanie serwletów z wzorami zapytań

8 JSP (?)

9 Java Server Pages Pliki HTML/WML zawierające skryplety - fragmenty kodu w javie. Konwertowane (Kompilowane) do postaci serwletów Możliwość definiowania własnych bibliotek tagów JSP Łatwe korzystanie z JavaBeans

10 Koncept: Kontrolery Centralny serwlet przechwytujacy wszystkie żądania. W zależności od żądania (akcji) wywołuje odpowiedni Handler, obsługujacy dane zdarzenie. Mapy zdarzenie-handler przechowywane są w plikach konfiguracyjnych.

11 Technologia pomocnicza: Struts Gotowe wzorce kontrolera Usystematyzowany schemat aplikacji Bogata bilblioteka tagów JSP, upraszczająca tworzenie formularzy, iterowanie po listach czy choćby generowanie linków.

12 Java API for XML Parsing Umożliwia pracę z danymi zapisanymi w XML'u za pomocą: parsera - SAX modelu danych - DOM transformacji - XSLT

13 SAX Umożliwia proste parsowanie dokumentów XML za pomocą parsera opartego na obsłudze zdarzeń. Parserowi podczepiamy napisaną przez nas klasę o odpowiednim interfejsie. Podczas parsowania parser będzie wywoływał opowiednie metody tej klasy. Zdarzenia: startDocument, startElement, characters, endElement, endDocument

14 DOM (Document Object Model) Podstawową wadą SAX'a jest sekwencyjny dostęp, DOM eliminuje tą wadę DOM jest to zbiór interfejsów, które odwzorowują strukturę dokumentu XML. Podstawowe interfejsy to Document, Element i Node. Obiekty tych interfejsów tworzą drzewo, które również nazywa się DOM'em.

15 XSLT (XML Stylesheet Language Transformations) Java API for XSLT- umożliwia transformowanie dokumentów XML za pomocą arkuszy XSL w sposób zgodny ze specyfikacją XSLT, zdefiniowaną przez W3C. Pozwala na prezentacje danych zawartych w dokumencie XML przy pomocy arkusza XLS

16 Technologia pomocnicza: Ant Małe narzędzie do dużych zadań Skrypty w postaci plików xml, pozwalające kompilować nawet najbardziej złożone aplikacje. Zupełne uwolnienie się od środowisk IDE. Nie ma potrzeby pisania skryptów do każdej aplikacji.

17 Co potrafi mrówka? Kompilować klasy Java, pliki JSP Czytać pliki konfiguracyjne.properties Kopiować, kasować, zmieniać nazwy plików. Zarządzać wersjami buildów. Komunikować się z CVS Pakować programy do postaci plików.jar

18 BEA Weblogic 8.1 Serwer aplikacji J2EE Wszystkie technologię powiązane z J2EE Własna maszyna wirtualna JRockit Własne sterowniki JDBC Pomost JCOM Pomost Tuxedo

19 JDBC (?)

20 JDBC API pozwalające komunikować się z bazami danych. Każdy producent pisze sterownik JDBC do własnej bazy danych. Możliwość wykonywania zapytań SQL i przeglądania wyników. Pule połaczeń.

21 JNDI (?)

22 Java Naming and Directory Interface Odpowiednik Naming Service z CORBA. Możliwość wiązania obiektów z nazwami, tworzenia podkontekstów w postaci drzewa. Możliwość podłączenia do LDAP Większość serwerów aplikacji oferuje własne JNDI.

23 JDBC 2 Pakiet javax.sql klasa DataSource - fabryka połaczeń z bazą danych, powiązana z nazwą w JNDI. Pule połaczeń. Multipule - zbiory pul połaczeń, możliwość tworzenia pul zapasowych lub pobierania danych z kilku źródeł.

24 EJB (?)

25 Enterprise Java Beans Co to jest java bean? Można powiedzieć, że jest to klasa (obiekt klasy) napisana w sposób zgodny z pewnym standardem, przez co mogą nią zarządzać programy. Zgodnie z zaleceniami, komponent JavaBean powinien mieć metody setXXX / getXXX dla każdego atrybutu. Bean nie znaczy fasola! Nazwa Java pochodzi od nazwy gatunku kawy, a coffee bean oznacza ziarno kawy. JavaBean raczej nie znaczy fasolki javy.

26 Enterprise Java Beans Gotowy wzorzec obiektowej warstwy logiki biznesowej. Ustandaryzowany sposób komunikacji z bazami danych Dostęp do Obiektów logiki biznesowej przez RMI-IIOP i JNDI

27 EJB - jak to działa? Generuje kod obiektuEJB - odpowiednika szkieletu z CORBA. Zarządza istniejącymi ziarnami, wywołując na nich metody. Może zapewniać trwałość ziaren. Większość rzeczy robi za nas kontener EJB.

28 EJB - co musimy napisać Klasa ziarna - własciwa implementacja logiki biznesowej. Klasa ta zaweira wszystkie atrybuty i implementacje metod. Remote interface - zbiór metod dostępnych zdalnie. Local interface - zbiór metod dostepnych lokanie Home interfaces - zbiór metod klasy, używanych do tworzenia/ znajdywania ziaren.

29 EJB - rodzaje ziaren Ile mamy rodzajów ziaren EJB?

30 EJB - rodzaje ziaren Session bean - świadczy usługi klientom. Reprezentuje raczej procesy niż dane. Są ziarna sesyjne posiadające stan i nie posiadające stanu. Entity bean - reprezentuje obiekty logiki biznesowej. Dzielą się na ziarna CMP i BMP. Message driven bean - ziarno obsługiwane przez JMS - o tym później.

31 Stateless Session Beans Ziarna nie posiadające stanu - pamietają dane na czas wywołania metody. Kontener może bardzo łatwo tworzyć pule takich ziaren. Przykład: ziarno kompresujace dane.

32 Statefull session beans Ziarna posiadające stan. Kontener buduje pule ziaren zapamiętywując ich stan. Ziarno jest więc usypiane (pasywowane) i budzone (aktywowane) jako zupełnie inne ziarno. Należy uważać, jeśli zapamiętuje się stan ziarna np. w bazie danych. Jeśli w międzyczasie wystapi awaria kontenera, dane nie zostaną usunięte. Przykład: wózek sklepowy.

33 Entity beans Ziarna o trwałym stanie. Posiadają klasy kluczy głównych. Kontener tworzy pule tych ziaren aktywując je i pasywując. Ich interfejsy Home posiadaja metody findByXXX(), pozwalające wyszukiwać ziarna. Przykład: Pracownik.

34 Entity beans: BMP / CMP BMP / CMP (?)

35 Entity beans: BMP Używając JDBC, sami piszemy metody pobierające stan ziarna z bazy danych, zapisujące ten stan oraz metody pozwalające wyszukiwać ziarna. Sami obsługujemy relacje miedzy ziarnami - trzeba albo wczytać cały graf obiektów (aggresive loading), albo w metodach getXXX() i setXXX() znaleźć te obiekty (lazy loading) Dużo pisania... Bean managed persistance

36 Entity Beans: CMP Kontener dba o zachowanie trwałości ziarna. Nie musimy pisać metod Load(), Store() itp. Nie musimy pisać metod typu findByXXX(), jedynie zadeklarować je w interfejsie Home. Kod jest dzięki temu kilkakrotnie krótszy, i nie musimy pisać ani jednej linijki SQL. Container managed persistance

37 Entity Beans: CMP Container managed persistance Jest w deskryptorze. Deskryptor zawiera nazwy pól z bazy danych odpowiadające atrybutom ziarna oraz deklaracje asocjacji miedzy ziarnami, dzieki czemu jest w stanie wygenerować odpowiednie inserty i updatey. Jednak skąd kontener miałby wiedzieć, co oznacza findBiggerThen (int i) czy findByColor(String color) ? Jak generuje odpowiednie zapytania?

38 Entity Beans: CMP EJB-QL Język zapytań na Entity Beansach. Posiada większość konstrukcji znanych z języka sql oraz możliwość trawersowania pól obiektów. Zapytania ejb-ql zapisywane są w deskryptorach, jako opisy metod findXXX() dla kontenera. Przykład: SELECT OBJECT(a) AS a FROM StudentBean WHERE student.dataUrodzenia.miesiąc = 5

39 XDoclet Dość nowa technologia. Jej twórcy twierdzą, że jest w stanie wygenerować do 83% kodu. Jest to gruba przesada, ale tak czy inaczej jest to mocne narzędzie. Wcześniejsze rozwiązania: programy typu Middlegen.

40 XDoclet - jak to działa W kodzie umieszczamy komentarze z odpowiednimi oznaczeniami, podobnymi do parametrów javadoc. Na podstawie tych oznaczeń XDoclet generuje za nas głupi kod - wszyskie interfejsy ejb, deskryptory ejb oraz deskryptory dla wiekszości kontenerów EJB. Współpracuje z technologią ant.

41 Zostawmy na momencik EJB-ki... JMS (?)

42 Java Messaging Service API do łatwego, niezawodnego przesyłania danych. Dane przesyłane są w postaci wiadomości. Do wiadomości można dopisywać obiekty i typy proste (klucz-wartość). Istnieja dwa modele wysyłania wiadomości: point- to-point, gdzie wiadomośc wysyłana jest do konkretnego klienta, oraz publish/subscribe, gdzie wiadomość wysyłana jest do wszystkich klientów zarejestrowanych w temacie (topic)

43 EJB - message driven beans Ziarna, dostępne przez JMS. Jest to w zasadzie asynchroniczne wołanie metod. JMS jest szybsze niż RMI-IIOP czy CORBA. Najprostszy model ziaren. Dużo problemów z bezpieczeństwem, load- balancingiem i transakcjami.

44 EJB - Message driven beans. Ze względu na złożoność JMS oraz fakt, że chodzi tu w zasadzie o asynchroniczne wołanie metod, ten rodzaj ziaren prawdopodobnie zostanie zastapiony ziarnami typu Asynchronicznego albo po prostu nowym interfejsem w ziarnach sesyjnych. Będzie tak, gdy specyfikacja EJB uwzględni asynchroniczne RMI. Póki co nie ma jednak niczego na ich miejsce, a programisci musza pisać ogromne ify żeby dowiedzieć się, o co w ogóle chodzi w danej wiadomości.

45 import javax.naming.*; public class EJBClient { public static void main (String[] argv) { // get the JNDI naming context Context initialCtx = new InitialContext (); // use the context to lookup the EJB Home interface AccountHome home=(AccountHome)initialCtx.lookup("Account"); // use the Home Interface to create a Session Bean object Account account = home.create (1234, "Athul", d); // invoke business methods account.credit ( d); // remove the object account.remove (); } } Sesja Enterprise JavaBean od strony klienta

46

47 JTA- (?)

48 Java Trasnaction API

49 Zarządca transakcji (ang. transaction manager) dostarcza funkcje i usługi wymagane do wyznaczania początku i końca transakcji, transakcyjnego zarządzania zasobami i synchronizacji Serwer aplikacji (ang. application server) stanowi środowisko uruchomieniowe dla aplikacji z uwzględnieniem zarządzania stanem transakcji (np. serwer EJB) Zarządca zasobów (ang. resource manager) umożliwia aplikacjom dostęp do zasobów. Aplikacje łączą się z zarządcą zasobów poprzez dedykowaną bibliotekę programową. Przykładem zarządców zasobów są serwery relacyjnych baz danych (komunikacja przez odpowiedni sterownik JDBC) lub serwery zarządzania komunikatami (dostępne poprzez interfejs Java Message Service - JMS) Transakcyjna aplikacja (np. składajaca się z wielu EJB) powierza zarządzanie transakcjami serwerowi aplikacji Zarządca komunikacji (ang. communication resource manager) umożliwia współpracę zarządców transakcji poprzez przekazywanie kontekstu transakcji

50 Java Trasnaction API Transakcje dla ziaren EJB: declarative - deklarujemy transakcje dla każdej metody w deskryptorze programative - sami wywołujemy metody begin() i commit() client-initiated - transakcje zaprogramowane w kodzie klienta

51 JAAS (?)

52 Java Authorization and Authentication Service API to miało być bardzo uniwersalne, gotowe do podłączenia do dowolnego systemu odpowiedzialnego za bezpieczeństwo.

53 Java Authorization and Authentication Service API to miało być bardzo uniwersalne, gotowe do podłączenia do dowolnego systemu odpowiedzialnego za bezpieczeństwo. Cel został osiągnięty....

54 Java Authorization and Authentication Service Jest to typowy przykład fragmentu programu, który wystarczy napisac raz, a potem stosować do woli w wielu aplikacjach. Wiekszość rzeczy robi za nas serwer aplikacji: my piszemy tylko klienta, moduł logowania i obiekt akcji. Serwer aplikacji powinien zapewniać obsługe ról, przechowywanie haseł, loginów. Nasza rola podczas pisania modułu logowania ogranicza się do skorzystania z narzędzi dostarczonych z serwerem.

55 Connector architecture

56 Podstawowym problemem przy tworzeniu aplikacji rozproszonych jest to, że zazwyczaj działają w heterogenicznym środowisku. Istnieje problem integracji aplikacji J2EE z istniejącymi systemami, nie przystosowanymi do specyfikacji J2EE. J2EE Connector Architecture - Architektura standardowego sposobu komunikacji z systemami EIS nie napisanymi w języku Java EIS -Enterprise Information System, najczęściej systemy typu ERP (Enterprice Resource Planning) takie jak SAP R/3 Komunikacja odbywa się wyłącznie poprzez adaptery zasobów (resource adapters). Jeden adapter umożliwia korzystanie z systemu EIS wielu różnym komponentom EJB. Architektura J2EECA definiuje standardowe API, które narzuca szkielet adaptera nie definiując jego metod - umożliwia tworzenie adapterów do wielu różnorodnych systemów.

57 Connector architecture Serwery aplikacji i adaptery zasobów są oparte na technice Kontraktów. Adapter realizuje 2 rodzaje kontraktów: Kontrakty aplikacji (Application Contract)– definiujące API, poprzez które komponenty takie jak EJB komunikują się z systemami EIS Kontrakty systemowe (System Contract) łączą adapter zasobów z usługami zarządzanymi przez serwer J2EE (pule połączeń, transakcje, zarządzanie bezpieczeństwem)

58 Podsumowanie

59 SERWERY APLIKACJI ZGODNE Z J2EE


Pobierz ppt "Przegląd technologii J2EE Jakub Kostynowicz Kamil Rembalski."

Podobne prezentacje


Reklamy Google