1 / 59

Przegląd technologii J2EE

Przegląd technologii J2EE. Jakub Kostynowicz Kamil Rembalski. Struktura J2EE. 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(). Aplety (Applets).

monifa
Download Presentation

Przegląd technologii J2EE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 Bean managed persistance • 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...

  36. Entity Beans: CMP Container managed persistance • 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.

  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 update’y. 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 Beans’ach. 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. Sesja Enterprise JavaBean od strony klienta 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", 1000225.28d);   // invoke business methods account.credit (1000001.55d);   // remove the object account.remove ();  } }

  46. JTA- (?)

  47. Java Trasnaction API

  48. Java Trasnaction API • 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

  49. 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

More Related