Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN."

Transkrypt

1 Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN kerk@moskit.ie.tu.koszalin.pl

2 Co powinieneś znać? Podstawy HTML i XML Programowanie obiektowe w Javie Serwery aplikacji (JSP i Servlety) Obsługa baz danych (SQL) 2

3 Cel! Tworzenie aplikacji rozproszonych w oparciu o technologię J2EE Instalowanie i obsługa aplikacji enterprise na wzorcowym serwerze J2EE server Tworzenie rozproszonych systemów wykorzystujących: komponenty rozproszone, systemy katalogowe, przetwarzanie komunikatów, wywoływanie metod usług webowych. 3

4 4 Zagadnienia poruszane na zajęciach Serwery WWW i serwery aplikacji Technologia Java 2 Enterprise Edition Enterprise Java Bean Transakcje i bezpieczeństwo Wzorce Projektowe Serwery nazewnicze JNDI i systemy katalogów LDAP Java Message Services (komunikaty) JavaMail (poczta) Web Services (usługi webowe)

5 5 Literatura The J2EE Tutorial Sun Microsystems Enterprise JavaBean Specification ver2.1 Sun Microsystems Mastering Enterprise JavaBeans second edition Ed Roman The Java Web Services Tutorial Sun Microsystems Thinking in Java - edycja polska Bruce Eckel, Helion 2001 Design Enterprise Application with the J2EE Nicholas Kassen and Enterprise Team EJB Designe Patterns Floyd Marinescu, Wiley Computer Publishing J2EE and XML development Kurt A. Gabrick, David B. Weiss, Mmanning Bitter Java Bruce A. Tade, Mmanning Java. Usługi sieciowe David A. Chappell, Tyler Jewell Sun Microsystems -

6 Ewolucja J2EE J2EE Serwery komunikatów Serwery pocztowe Transakcje Bazy danych Serwery nazw Systemy Katalogowe EJB Architektura komponentowa Autoryzacja użytkowników Programowanie obiektowe Kontenery JAVA Serwery aplikacji Programowanie strukturalne Page Engine CGI Web Serwices SSL HTTPS HTTP XML HTML 6

7 7 N-Tier Przeglądarka internetowa Serwer webowy Serwer aplikacji Dane Warstwa prezentacji Warstwa logiki biznesowej Warstwa danych

8 N-Tier Technologia obiektów rozproszonych: rozbicie aplikacji na samozarządzalne komponenty współdziałanie komponentów pomiędzy różnymi sieciami i systemami operacyjnymi Integracja ze starszymi technologiami - technologia konektorów 8

9 Enterprise API Enterprise Java Beans (EJB) komponenty działające w warstwie logiki biznesowej, zarządzane i wykonywane na serwerze w kontenerze EJB Java Naming and Directory Interface (JNDI) usługa katalogowania pełniąca rolę zapamiętywania informacji o położeniu zasobów, scalania i zarządzania aplikacji J2EE 9

10 10 Platforma J2EE HTML Serwer Aplikacji Kontener WEB JDBC DBMS XHTML XML APPLET Servlets JSP TAG Lib JAF JAVAMAIL JMS JDBC JTA JNDI RMI/IIOP JavaMail RMI Mail Server Aplikacja JAVA Kontener EJB IIOP CORBA Server Aplikacja klienta RMI/IIOP JNDI Session Beans JTA JDBC JMS Message Beans JAVAMAIL JAF Entity Beans JNDI JMS Directory Service Message queue

11 Serwlety DBMS Przeglądarka internetowa Klient HTTP HTML Kontener WEB Servlety i strony JSP EJB Baza Danych Kontener EJB Serwer aplikacji - ograniczenia przy rozbudowie systemu 11

12 Serwlety JavaBean DBMS Przeglądarka internetowa Klient HTTP HTML Kontener WEB Servlety i strony JSP Java Bean EJB Baza Danych Kontener EJB Serwer aplikacji + oddzielenie widoku od logiki biznesowej 12

13 Serwlety EJB DBMS Przeglądarka internetowa Klient HTTP HTML Kontener WEB Servlety i strony JSP Java Bean EJB Baza Danych Kontener EJB Serwer aplikacji + transakcyjność, trwałość i bezpieczeństwo 13

14 Heterogeniczny dostęp do danych LDAP JMS BEAN EJB KLIENT JSP Custom Tag XML JDBC DBMS Korzystanie z danych z różnorodnych źródeł (transformacje po stronie serwera, abstrakcyjność danych) 14

15 EJB 15

16 Warstwa logiki biznesowej Logika biznesowa jest odpowiedzialna za wykonywanie głównych zadań aplikacji: dostępu do źródeł danych integracji systemu z nowymi funkcjami Odwzorowanie metod za pomocą komponentów biznesowych: session bean i wielu entity beans. Warstwa obsługiwana jest przez serwer aplikacji zgodny z architekturą J2EE 16

17 17 Enterprise Java Bean Architektura EJB jest przeznaczona do tworzenia aplikacji bazujących na rozproszonych komponentach wsparcie transakcji bezpieczeństwo Kontakt z innymi komponentami biznesowymi Kontakt z klientem Komponenty biznesowe Administracja Bezpieczeństwo Kontakt z danymi Transakcje

18 Enterprise Java Bean Specyfikacja EJB określa strukturę usług działajcych po stronie serwera producenci serwerów aplikacji webowch tworzą kontenery EJB Serwer Kontener WEB Servlet Java Server Pages Kontener EJB EJB EJB EJB EJB EJB EJB Komponenty rozproszone Komponenty lokalne 18

19 Zalety komponentów EJB otwartość standardu wieloplatformowość javy izolacja od problemów połączeń oraz transakcji dystrybucja EJB w sieci serwerów wielokrotne użycie komponentów 19

20 20 EJB EJB architektura do dystrybucji komponentów transakcyjnych po stronie serwera Zdefiniowanie standardowych interfejsów i ich implementacja w serwerach aplikacji (kontenerach EJB)

21 21 EJB <<Interface>> java.rmi.remote <<Interface>> java.io.serializable jdk API <<Interface>> EJBHome <<Interface>> EJBObject <<Interface>> EnterpriseBean javax.ejb API <<Interface>> SessionBean Projektant Komponentu EJB

22 Architektura EJB Kontener EJB EJBHome (interfejs) EJBHome (implementacja) KLIENT EJB EJBObject (interfejs) EJBObject (implementacja) Dostęp do komponentów EJB za pomocą zdefiniowanych interfejsów (HOME i REMOTE) 22

23 Architektura EJB Kontener EJB EJBHome KLIENT EJBObject EJB Dostęp do komponentów EJB za pomocą zdefiniowanych interfejsów (HOME i REMOTE) 23

24 24 Przykład: Witaj public class Witaj { public String witaj() { return "Witaj!!!"; } } Przykładowa klasa przeznaczona do implementacji jako komponent EJB Należy stworzyć: klasę dziedziczącą z EnterpriseBean Interfejs EJBHome Interfejs EJBObject

25 Klasa SessionBean WitajBean.java import javax.ejb.*; public class WitajBean implements SessionBean { <<Interface>> java.io.serializable public String witaj() { return "Witaj!!!"; } public WitajBean(){} public void ejbcreate(){} public void ejbremove(){} <<Interface>> EnterpriseBean <<Interface>> SessionBean public void ejbactivate(){} public void ejbpassivate(){} public void setsessioncontext(sessioncontext ctx) { } WitajBean } 25

26 Interfejs EJBHome WitajHome.java import javax.ejb.*; import java.rmi.remoteexception; <<Interface>> java.rmi.remote public interface WitajHome extends EJBHome { } Witaj create() throws RemoteException,CreateException; <<Interface>> EJBHome <<Interface>> WitajHome 26

27 Interfejs EJBObject Witaj.java import javax.ejb.*; import java.rmi.remoteexception; <<Interface>> java.rmi.remote public interface Witaj extends EJBObject { } public String witaj() throws RemoteException; <<Interface>> EJBObject <<Interface>> Witaj 27

28 28 Witaj EJB <<Interface>> java.rmi.remote <<Interface>> java.io.serializable jdk API <<Interface>> EJBHome <<Interface>> EJBObject <<Interface>> EnterpriseBean javax.ejb API <<Interface>> SessionBean <<Interface>> WitajHome <<Interface>> Witaj WitajEJB Projektant Komponentu EJB

29 29 Witaj EJB Diagram klas komponentu WitajBean (Power Desinger - Sybase) interfejs klasa

30 Witaj EJB <<Interface>> java.rmi.remote <<Interface>> java.io.serializable jdk API <<Interface>> EJBHome <<Interface>> EJBObject <<Interface>> EnterpriseBean javax.ejb API <<Interface>> SessionBean <<Interface>> WitajHome <<Interface>> Witaj WitajEJB Projektant Komponentu EJB xxxwitaj EJBHome xxxwitaj EJBObject xxx WitajBean Kontener EJB 30

31 Klienci komponentów EJB Klient Biznesowy (web service) Przeglądarka HTML Aplikacja Javy SOAP HTTP RMI-IIOP Kontener WEB JSP i servlety RMI-IIOP Kontener EJB EJB Applet Klient C++ Klient JMS RMI-IIOP CORBA-IIOP JMS EJB RMI-IIOP EJB 31

32 32 Klient (strona JSP) Kontener WEB Kontener EJB Przeglądarka HTML HTTP JSP EJB

33 Klient EJB KLIENT try { Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/witaj"); WitajHome home = (WitajHome)PortableRemoteObject. narrow(objref,witajhome.class); 1 1 Serwer Nazw JNDI Witaj witaj = home.create(); out.println(witaj.witaj()); } catch (Exception ex) { } Klient przesyła do Serwera JNDI nazwę obiektu java:comp/env/ejb/witaj 33

34 Klient EJB KLIENT try { Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/witaj"); WitajHome home = (WitajHome)PortableRemoteObject. narrow(objref,witajhome.class); Witaj witaj = home.create(); out.println(witaj.witaj()); 1 2 } catch (Exception ex) { } 2 Serwer Nazw JNDI Serwer JNDI odsyła do Klienta referencję do obiektu o określonej nazwie 34

35 Klient EJB Interfejs domowy HOME 3 4 EJBHome Kontener EJB KLIENT EJB EJB EJB 1 2 Serwer Nazw JNDI Referencja zostaje wykorzystana przez Klienta do pobrania nowej referencji wskazującej na obiekt domowy Home kontenera EJB 35

36 Klient EJB try { Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/witaj"); WitajHome home = 3 (WitajHome)PortableRemoteObject. narrow(objref,witajhome.class); Witaj witaj = home.create(); out.println(witaj.witaj()); } catch (Exception ex) { } Klient otrzymuje dostęp do obiektu home stworzonego przez Kontener na podstawie klasy wygenerowanej z interfejsu domowego Home 4 EJBHome 36

37 WitajHome & WitajBean_RemoteHomeImpl Klasa WitajBean_RemoteHomeImpl.java <<Interface>> WitajHome Metoda create() Interfejs Witaj.java xxxwitaj EJBHome 37

38 Klient EJB Interfejs domowy HOME 3 4 EJBHome Kontener EJB Pula obiektów KLIENT Interfejs zdalny REMOTE 5 create() EJB EJB EJBObject EJB 1 2 Serwer Nazw JNDI Klient posiadając referencję na obiekt domowy HOME wywołuje jego metodę create() tworzącą obiekt zdalny EJBObject 38

39 Klient EJB 5 try { Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/witaj"); WitajHome home = (WitajHome)PortableRemoteObject. narrow(objref,witajhome.class); Witaj witaj = home.create(); out.println(witaj.witaj()); } catch (Exception ex) { } Klient otrzymuje dostęp do obiektu zdalnego witaj stworzonego przez Kontener na podstawie klasy wygenerowanej z interfejsu zdalnego Remote EJBObject 39

40 Witaj & WitajBean_EJBObjectImpl Metoda witaj() Interfejs Witaj.java <<Interface>> Witaj Klasa WitajBean_EJBObjectImpl.java xxxwitaj EJBObject 40

41 41 Instancje EJB & Kontener Kontener (nie klient) decyduje o tworzeniu i usuwaniu instancji komponentów EJB Kontener EJB EJB możliwość wykorzystania wolnych instancji przez innych klientów (tworzenie puli komponentów już przy starcie serwera wzrost wydajności) EJB EJB

42 Klient EJB Interfejs domowy HOME 3 4 EJBHome Kontener EJB KLIENT Interfejs zdalny REMOTE 5 Create() EJB EJB 6 witaj() EJBObject EJB 1 2 Serwer Nazw JNDI Klient ma teraz pełny dostęp do komponentu EJB i może wykonywać jego metody biznesowe np. metodę witaj() 42

43 43 Klient EJB try { Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/witaj"); WitajHome home = (WitajHome)PortableRemoteObject. narrow(objref,witajhome.class); Witaj witaj = home.create(); out.println(witaj.witaj()); } catch (Exception ex) { } 6 Klient wywołuje metodę biznesową witaj() obiektu witaj komponentu EJB w taki sam sposób jak w przypadku komponentów lokalnych

44 Klient EJB Interfejs domowy HOME 3 4 EJBHome Kontener EJB KLIENT Interfejs zdalny REMOTE 5 Create() EJB EJB 6 EJBObject witaj() 7 EJB 1 2 Serwer Nazw JNDI Obiekt zdalny po otrzymaniu od Klienta nakazu wykonania metody witaj() wywołuje metodę na określonej instancji komponentu EJB 44

45 Klient(Przeglądarka) 45 Klient Serwer Serwer(Kontener WEB) Serwer(Kontener EJB) Przeglądarka HTML Kontener WEB JSP Kontener EJB EJB

46 Serwer J2EE 46

47 47 Instalacja i uruchomienie instalacja serwera np. do katalogu c:\java\j2ee ustawienie zmiennych środowiskowych JAVA_HOME=c:\java\jdk j2ee_home=c:\java\j2ee start serwera c:\java\j2ee\bin\j2ee -verbose test serwera zatrzymanie serwera c:\java\j2ee\bin\j2ee -stop

48 Uruchomienie i zatrzymanie serwera j2ee -stop j2ee -verbose W celu uruchomienia serwera w środowisku Windows 9x należy dokonać modyfikacji plików startowych 48

49 49

50 50 Cloudscape (baza danych pakietu J2EE) cloudview.bat cloudscape.bat -start cloudscape.bat -stop

51 Cloudscape i J2EE UWAGA! Po uruchomieniu serwera J2EE bazy danych są wyszukiwane tylko w katalogu z którego został wywołany sktyp startowy.... Brakuje w skryptach J2EE wskazania na domowy katalog Cloudscape Przeciwdziałanie: Uruchamiać J2EE z poziomu katalogu cloudscape (najlepiej zmienić odnośnik)..\bin\j2ee verbose lub Zmodyfikować plik setenv.bat - (na czerwono zaznaczono dodane elementy): set CLOUD_OPTIONS=-Dcloudscape.system.home=%J2EE_HOME%\cloudscape set JAVA_COMMAND=%JAVA_HOME%\bin\java -Xmx128m %CLOUD_OPTIONS% %SSL_OPTIONS% %JAAS_OPTIONS% 51

52 52 Dystrybuja komponentów EJB Tworzenie Komponentów EJB Budowa aplikacji Instalacja aplikacji Projektant komponentów EJB Projektant aplikacji Instalator aplikacji Instalacja serwera Administrator Instalator kontenera EJB (serwera aplikacji)

53 Program zarządza archiwami aplikacji Enterprise (EAR) oraz ich instalacją na serwerze aplikacyjnym 53 Application Deployment Tool deployment

54 Deskryptory rozmieszczenia (Deployment Descriptions) EAR (Enterprise Application Resource) WAR (Web Application Resource) RAR (Resource Adapters) EJB Klient JAR Deskryptory DD opisują wewnętrzną strukturą archiwum aplikacji 54

55 DD deployment descriptor (desktyptor rozmieszczenia w formacie XML) 55 Deployment Tool Klasa i interfejsy komponentu EJB EJB home EJB object EJB DD EJB home EJB object EJB DeployTool DD jar Archiwum ejb-jar

56 56 Deployment Tool Archiwa komponentów EJB jar Archiwa komponentów webowych war jar DD ear Archiwa aplikacji klientów jar war jar Archiwum aplikacji (plik ear) Deskryptor rozmieszczenia DD DeployTool

57 57 Mapowanie klas Komponent Session Stateless Klasa WitajBean Interfejs domowy WitajHome Interfejs zdalny Witaj

58 58 Komponent EJB WitajBean Nowy komponent WitajBean znajdujący się w archiwum WitajEJB Zamapowane klasy komponentu

59 59 Mapowanie nazw JNDI Dla komponentów należy przypisać nazwy za pomocą których będą rozpoznawane przez inne komponenty, czy też przez kod klienta (jsp, servlety) Wprowadzenie nazwy ejb/witaj dla komponentu WitajBean

60 60 Archiwum webowe WAR Nowe archiwum WAR Plik witaj.jsp

61 61 Web Context Nazwa w Context Root określa lokalizator dostępu URL aplikacji do archiwum WitajWAR

62 Referencja do komponentu EJB 62

63 Deployment 63

64 Serwer Nazw JNDI Przeglądarka internetowa 1 Kontener WEB Strona JSP 4 Kontener EJB EJB Klient 2 3 Serwer JNDI Serwer Aplikacji 64

65 Test komponentu EJB Przeglądarka internetowa Klient HTTP HTML Kontener WEB Servlety i strony JSP Kontener EJB EJB W konsoli serwera można podglądać informacje o poprawności lub ewentualnych błędach publikowania aplikacji 65

66 Wzorcowa aplikacja J2EE 66

67 67 Petstore (deployment) Archiwum EAR zawierające komponenty aplikacji Enterprise (archiwa jar, war, rar)

68 Cykl tworzenia aplikacji Projekt logiki biznesowej oraz kontrolera UML (Rational Rose) Tworzenie i debugowanie klas javy (servlety, java beans, EJB) Java IDE Tworzenie archiwum EAR Deployment PUBLIKOWANIE Umieszczenie codu logiki biznesowej, kontrolera oraz widoku Serwer Aplikacji (J2EE Server) Edytory JSP i HTML (notepad ) Tworzenie stron HTML i JSP (widoki) 68

69 Platforma Eclipse 69

70 Session Bean 70

71 Ziarenka EJB J2EE Message-Driven EJB Session EJB BMP Entity EJB CMT (Container-Managed Transactions) BMT (Bean-Managed Transactions) Stateless Stateful CMT (Container-Managed Transactions) BMT (Bean-Managed Transactions) Interfejsy Remote i Local Interfejsy Remote i Local CMP Entity EJB Powiązane komponenty CMP Entity EJB Obsługa tabeli z podłączonej bazy danych Obsługa EJB-QL Interfejsy Remote i Local Obsługa tabel z podłączonej bazy danych CMR (Container-Managed Relationships) Interfejsy Remote i Local 71

72 Session Bean Reprezentacja przypadków użycia (Use Cases) lub procesów biznesowych realzowanych w imieniu klienta Wypłata gotówki Klient Dokonanie przelewu System Bankowy Złożenie depozytu BANKOMAT Komponenty Session reprezentują działanie na danych (nie reprezentują samych danych) 72

73 73 Session Bean klient klient klient Session Bean Session Bean Session Bean Komponent typu Session (reprezentacja klienta po stronie serwera) Komponenty Session Bean charakteryzują się: - reprezentacja procesów biznesowych - krótki żywot komponentu (podobie jak sesje w jsp) - osobna instancja komponentu dla klientów - komponent ma charakter pośrednika (TRANSIENT)

74 Przeznaczenie komponentów SessionBean Użycie komponentu do modelowania procesów i kontroli Przenoszenie logiki biznesowej z aplikacji klienckich (client-serwer) na serwery aplikacji Kontrolowanie interakcji pomiędzy komponentami EJB 74

75 75 Rodzaje komponentów Session Session Bean Stateless Komponent nie utrzymuje żadnych stanów wewnętrznych, które można wykorzystać przy ponownym wywołaniu komponentu przez klienta (bezstanowość) Stateful Komponent ma możliwość utrzymania stanów wewnętrznych pomiędzy wywołaniami komponentu przez klienta (mapowanie jednego komponentu na jednego klienta)

76 76 Session Stateless Bean

77 77 Cykl życia komponentu Stateless Bean Komponent nie istnieje Class.newInstance() setsessioncontext() ejbcreate() ejbremove() Wywoływanie metod biznesowych Komponent istnieje

78 Diagram sekwencji Stateless Session Bean Klient Kontener Bean Baza Danych newinstance() setsessioncontext() ejbcreate() Dodanie nowej instancji komponentu bean do puli komponentów 78

79 Diagram sekwencji Stateless Session Bean Klient Kontener Bean Baza Danych newinstance() setsessioncontext() ejbcreate() Dodanie nowej instancji komponentu bean do puli komponentów home.create() new EJB object Obsługa metody create 79

80 Diagram sekwencji Stateless Session Bean Klient Kontener Bean Baza Danych newinstance() setsessioncontext() ejbcreate() Dodanie nowej instancji komponentu bean do puli komponentów home.create() new EJB object ejbobject.method(arg) Obsługa metody create method(arg) read or update data register resource manager with transaction Obsługa metod biznesowych 80

81 Diagram sekwencji Stateless Session Bean Klient Kontener Bean Baza Danych newinstance() setsessioncontext() ejbcreate() Dodanie nowej instancji komponentu bean do puli komponentów home.create() new EJB object ejbobject.method(arg) Obsługa metody create method(arg) read or update data register resource manager with transaction Obsługa metod biznesowych ejbobject.remove() or home.remove(...) Obsługa metody remove 81

82 Diagram sekwencji Stateless Session Bean Klient Kontener Bean Baza Danych newinstance() setsessioncontext() ejbcreate() Dodanie nowej instancji komponentu bean do puli komponentów home.create() new EJB object ejbobject.method(arg) Obsługa metody create method(arg) read or update data register resource manager with transaction Obsługa metod biznesowych ejbobject.remove() or home.remove(...) Obsługa metody remove ejbremove() Usunięcie instancji komponentu bean z puli komponentów 82

83 Interfejsy i klasa bean a Interfejs CalculatorHome Klasa CalculatorBean Interfejs Calculator W klasie komponentu CalculatorBean zdefiniowano dwie metody biznesowe: add oraz substract 83

84 Strona JSP (metody init i destroy) 84 Kalkulator klient (jsp) Komunikacja z komponentem EJB poprzez JNDI

85 85 Aplikacja klienta cd.. Strona JSP (wywołanie metody biznesowej)

86 86 Session Stateful Bean

87 87 Session Stateful Zalety Łatwość użycia Obiektowość Skalowalność Określanie logiki biznesowej dla pojedynczego klienta Komponent Session Stateful pełni rolę komunikatora serwera aplikacji z klientem przechowującego stany konwersacji (typowe zastosowanie to wózek na zakupy)

88 Ciasteczka (cookies) HTTP Session Stateful Session Wpisy w bazie danych 88 Sesyjność N-tier Serwer aplikacji Przeglądarka internetowa Klient HTTP HTML Kontener WEB Servlety i strony JSP EJB Baza Danych Kontener EJB

89 89 Metody sterujące cyklem życia Stateful Session Bean Pasywność komponentu EJB 2 3 Aktywacja komponentu EJB 1 Aktywacja komponentu EJB ej bcreat e() ejbpasivate() ejbactivate() ejbremove() 4 Niszczenie komponentu EJB Kontener EJB

90 90 Cykl życia komponentu Stateful Bean Komponent nie istnieje Class.newInstance() setsessioncontext() ejbcreate() ejbremove() Upłynięcie czasu obsługi klienta Wywoływanie metod biznesowych Komponent istnieje ejbpasivate() ejbactivate() Uśpienie komponentu (serializacja)

91 91 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych home.create(arg) new EJB object newinstance() setsessioncontext() ejbcreate(arg) Obsługa metody create

92 92 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych home.create(arg) new EJB object ejbobject.method(arg) newinstance() setsessioncontext() ejbcreate(arg) Obsługa metody create method(arg) Obsługa metod biznesowych

93 93 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych home.create(arg) new EJB object ejbobject.method(arg) newinstance() setsessioncontext() ejbcreate(arg) Obsługa metody create method(arg) Obsługa metod biznesowych ejbpasivate() Serializacja instancji komponentu i utrwalenie w magazynie Uśpienie instancji komponentu

94 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych home.create(arg) new EJB object ejbobject.method(arg) newinstance() setsessioncontext() ejbcreate(arg) Obsługa metody create method(arg) Obsługa metod biznesowych ejbpasivate() Serializacja instancji komponentu i utrwalenie w magazynie Uśpienie instancji komponentu Odczyt serialozowanego komponentu z magazynu i deserializacja komponentu ejbobject.method(arg) ejbactivate() method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych 94

95 Metoda ejbpasivate() Kontener 1 ejbpasivate() Instancja komponentu EJB 2 Przed uśpieniem komponentu (utrwaleniem komponentu) 2 kontener wywołuje metodę ejbpasivate() 1. Projektant komponentu EJB ma możliwość zdefiniowania własnego kodu wywoływanego podczas zasypiania 95

96 Metoda ejbactivate() Kontener 1 4 ejbpasivate() ejbactivate() Instancja komponentu EJB 2 3 Kontener ożywia utrwalony komponent wywołująć metodę ejbactivate() 4. 3 Projektant komponentu EJB ma możliwość zdefiniowania własnego kodu wywoływanego po uaktywnieniu komponentu 96

97 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych home.create(arg) new EJB object ejbobject.method(arg) newinstance() setsessioncontext() ejbcreate(arg) Obsługa metody create method(arg) Obsługa metod biznesowych ejbpasivate() Serializacja instancji komponentu i utrwalenie w magazynie Uśpienie instancji komponentu Odczyt serialozowanego komponentu z magazynu i deserializacja komponentu ejbobject.method(arg) ejbactivate() method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych 97

98 98 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych ejbobject.transactional method(arg) afterbegin() read database data register resource manager with transaction Obsługa sekwencji transakcji (w przypadku implementacji javax.ejb.sessionsynchronization)

99 99 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych ejbobject.transactional method(arg) afterbegin() read database data register resource manager with transaction Obsługa sekwencji transakcji (w przypadku implementacji javax.ejb.sessionsynchronization) beforecompletion() prepare commit write database data If commit = true then aftercommpletion(true) If commit = false then aftercommpletion(false) Zatwierdzenie sekwencji transakcji (w przypadku implementacji javax.ejb.sessionsynchronization)

100 Diagram sekwencji Stateful Session Bean Klient Kontener Bean Baza Danych ejbobject.transactional method(arg) afterbegin() read database data register resource manager with transaction Obsługa sekwencji transakcji (w przypadku implementacji javax.ejb.sessionsynchronization) beforecompletion() prepare commit write database data If commit = true then aftercommpletion(true) If commit = false then aftercommpletion(false) Zatwierdzenie sekwencji transakcji (w przypadku implementacji javax.ejb.sessionsynchronization) ejbobject.remove() or home.remove(...) ejbremove() Obsługa metody remove 100

101 101 Interfejsy i klasa bean a Interfejs WozekHome Interfejs Wozek Klasa WozekBean

102 DeployTool 102

103 103 Wózek na zakupy klient (jsp) Inicjalizacja komponentu za pomocą JNDI tak samo jak przy WitajBean

104 Interfejsy lokalne (LocalHome i LocalObject) 104

105 Lokalny dostęp do komponentu Klient JVM 1 JVM Komponent W przypadku dystrybucji komponentu na inną maszynę Javy korzystamy z metod wywoływane zdalnie 1 Klient 2 1 JVM Komponent W przypadku dystrybucji komponentu na tej samej maszynie Javy można stosować także metody 2 wywoływane lokalnie 105

106 Interfejsy zdalne Zalety Niezależność od lokacji komponentu Elastyczność w dystrybucji Izolacja komponentów Wady Większa złożoność Możliwość występowania wyjątków RemoteException 106

107 Interfejsy lokalne Zalety Lepsza wydajność Wady Trudności w dystrybucji obiektu Klient i komponent korzystają z tej samej maszyny wirtualnej JAVA 107

108 Interfejs EJBLocalHome WitajLocalHome.java import javax.ejb.*; public interface WitajLocalHome extends EJBLocalHome { <<Interface>> EJBLocalHome WitajLocal create() throws CreateException;; } <<Interface>> WitajLocalHome WitajHome.java import javax.ejb.*; import java.rmi.remoteexception; public interface WitajHome extends EJBHome { } Witaj create() throws RemoteException,CreateException; 108

109 Interfejs EJBLocalObject WitajLocal.java import javax.ejb.*; public interface WitajLocal extends EJBLocalObject { <<Interface>> EJBLocalObject public String witaj(); } <<Interface>> WitajLocal Witaj.java import javax.ejb.*; import java.rmi.remoteexception; public interface Witaj extends EJBObject { } public String witaj() throws RemoteException; 109

110 110 Witaj EJB <<Interface>> java.rmi.remote <<Interface>> java.io.serializable jdk <<Interface>> EnterpriseBean javax.ejb <<Interface>> EJBLocalHome <<Interface>> EJBLocalObject <<Interface>> EJBHome <<Interface>> EJBObject <<Interface>> SessionBean <<Interface>> WitajLocalHome <<Interface>> WitajLocal <<Interface>> WitajHome <<Interface>> Witaj WitajBean Projektant Komponentu EJB xxxwitaj EJBLocalHome xxxwitaj EJBLocalObject xxxwitaj EJBHome xxxwitaj EJBObject xxx WitajBean Kontener EJB

111 Deploytool 111

112 ANT 112

113 113 ANT make dla javy?! ANT narzędzie do tworzenia skryptów opartych o XML a przeznaczonych do automatyzacji kompilacji projektów Niektóre zalety: przenośność (niezależność od systemu) Automatyzacja pracy poprzez kompilacje projektów i ich automatyczne publikowanie na serwerach aplikacji, wywoływanie skryptów SQL, tworzenie dokumentacji JavaDOC itd...

114 Skrtypt build.xml 114

115 115 ant build.xml deploy Inicjalizacja i tworzenie katalogów Kompilacja plików java Tworzenie archiwów jar, war i ear Publikowanie aplikacji ear na serwerze J2EE

116 116 ant build.xml undeploy Inicjalizacja Usunięcie publikowanej aplikacji z serwera J2EE Usunięcie tumczasowych plików i katalogów

117 117 Interfejsy lokalne Local EJBHome EJBHome klient EJBObject A Bean Local EJBObject B Bean Local EJBObject B Bean Komponent B Bean posiada zdefiniowane interfejsy lokalne LocalEJBHome oraz LocalEJBObject

118 118 Klasa adaptacyjna

119 119 Klasa Adaptera - dziedziczenie StatelessSessionAdapter <<Interface>> SessionBean WitajBean Do klasy Adaptera można przenieść puste metody, których definiowanie wymusza specyfikacja EJB

120 120 Klasa Adaptera - dziedziczenie <<Interface>> SessionBean StatelessSessionAdapter WitajBean Klasa WitajBean definiuje wyłącznie metody biznesowe

121 Klasa Adaptera - dziedziczenie Z klasy Adaptera mogą teraz korzystać inne klasy komponentów biznesowych tworzonej aplikacji <<Interface>> SessionBean StatelessSessionAdapter CalculatorBean Zalety: W klasie adaptera można definiować metody, które będą widziane przez inne klasy z niej dziedziczące ConverterBean WitajBean 121

122 MySQL i J2EE 122

123 Instalacja sterownika JDBC Instalacja obsługi bazy danych MySQL w środowisku serwera J2EE modyfikacja pliku userconfig.xml w katalogu bin serwera J2EE set J2EE_CLASSPATH=d:\java\mysql\mm.mysql bin.jar 123

124 124 Instalacja sterownika JDBC dodanie obsługi sterownika org.gjt.mm.mysql.driver j2eeadmin -addjdbcdriver org.gjt.mm.mysql.driver j2eeadmin -listjdbcdriver Informacje o obsługiwanych sterownikach baz danych zapisywane są w pliku resource.properties znajdującego się w katalogu config serwera J2EE

125 125 Przykład: JSP JDBC Driver Bezpośredni dostęp do bazy danych za pomocą sterownika JDBC

126 126 Instalacja źródła danych Zastosowanie odwołania do bazy danych za pomocą JNDI JNDI jdbc/portaldb wiązanie Baza danych jdbc:mysql://localhost/portal dodanie lokalizatora przykładowej bazy danych portal j2eeadmin -addjdbcdatasource jdbc/portaldb,jdbc:mysql://localhost/portal j2eeadmin -listjdbcdatasource

127 Nazwa JNDI źródła bazy jdbc/portaldb 127

128 128 Przykład: JSP JNDI JDBC Driver Baza danych jest widziana jako źródło (DataSource) wskazywane przez JNDI

129 Źródło bazy danych Class.forName("org.gjt.mm.mysql.Driver");... String url = "jdbc:mysql://localhost/portal"; Connection con = DriverManager.getConnection(url,"portal","portal"); Statement stmt = con.createstatement(); String retrievestring = "SELECT * from user"; ResultSet rs = stmt.executequery(retrievestring);... jdbc_mysql.jsp InitialContext initial = new InitialContext(); DataSource ds = (DataSource)initial.lookup("java:comp/env/jdbc/portal"); Connection con = ds.getconnection(); Statement stmt = con.createstatement(); String retrievestring = "SELECT * from user"; ResultSet rs = stmt.executequery(retrievestring);... jdbc_resource.jsp 129

130 130 Deklaracja referencji do źródła w aplikacji webowej WAR Aplikacja webowa posiada możliwość odwołania się do źródła danych przez nazwę jdbc/portal

131 131 Deklaracja referencji do źródła w aplikacji webowej WAR JNDI jdbc/portaldb wiązanie Baza danych jdbc:mysql://localhost/portal lookup jdbc/portal web.xml web.xml JSP JSP JSP

132 132 Deklaracja referencji do źródła w aplikacji enterprise EAR org.gjt.mm.mysql.driver Baza MySQL JdbcDatasource jdbc/portaldb JSP sun-j2ee-ri.xml application.xml jdbc:mysql://localhost/portal sun-j2ee-ri.xml web.xml Serwer J2EE Klient

133 Źródło danych JdbcDatasource aplikacji enterprise EAR Serwer MySql jdbc:mysql://localhost/portal jdbc:mysql://localhost/portal jdbc/portaldb + login & password resource.properties sun-j2ee-ri.xml EAR jdbc/portaldb login & password jdbc/portal jdbc/portal jdbc/portal web.xml javax.sql.datasource jdbc_resource.jsp WAR Serwer J2EE 133

134 Entity Beans 134

135 135 Entity Bean Komponenty Entity reprezentują dane biznesowe (opakowanie danych) Klient Zakup towaru Potwierdzenie transakcji Rozpoczęcie transakcji Konto sklepu Przelew Konto klienta

136 Ziarenka EJB J2EE Message-Driven EJB Session EJB BMP Entity EJB CMT (Container-Managed Transactions) BMT (Bean-Managed Transactions) Stateless Stateful CMT (Container-Managed Transactions) BMT (Bean-Managed Transactions) Interfejsy Remote i Local Interfejsy Remote i Local CMP Entity EJB Powiązane komponenty CMP Entity EJB Obsługa tabeli z podłączonej bazy danych Obsługa EJB-QL Interfejsy Remote i Local Obsługa tabel z podłączonej bazy danych CMR (Container-Managed Relationships) Interfejsy Remote i Local 136

137 137 Rodzaje komponentów EJB klient klient Entity Bean Komponent typu Entity (obiekt biznesowy reprezentujący przechowywane dane) klient Komponenty Entity Bean cechuje: - reprezentacja danych biznesowych -długi okes życia komponentu (dane baz danych) - wspólna (dzielona) instancja komponentu dla klientów - komponent ma charakter trwałości (PERSISTENT)

138 138 Dostęp do baz danych Tradycyjny Logika biznesowa rezyduje w kodzie klienta Utrudnienia w ponownym wykorzystaniu kodu Lepsza wydajność?! Entity EJB Dostęp do bazy danych za pomocą serwera Umiejscowienie logiki biznesowej po stronie serwera (kontener EJB) Możliwość klastrowania danych (rozproszenie na kilka serwerów) Złożoność projektowania systemów EJB

139 Entity EJB Wady (spowolnienie pracy): każde wywołanie metody następuje przez jego interfejsy kopiowanie parametrów komponentu sprawdzanie zabezpieczeń sprawdzanie transakcji Zalety: dostęp komponentu dla wielu klientów w tym samym czasie synchronizacja dostępu do komponentu z uwzględnieniem transakcji 139

140 Komponety EJB klient Komponent SessionBean reprezentuje klienta na serwerze Entity Bean Entity Bean - redukcja liczby odwołań do serwera klient - komponent session pełni rolę osłony oddzielającej klienta od wewnętrznych relacji pomiędzy komponentami entity Session Bean Entity Bean Entity Bean Wzorzec projektowy FASADY 140

141 141 Komunikacja z komponentem Servlet Entity Bean Servlet Access Bean Entity Bean Servlet Session Bean Entity Bean Klient Serwer

142 142 Rozwój standardu EJB EJB 1.0 Session Bean - Stateless Session Bean - Statefull Session Bean Entity Bean -CMP -BMP EJB 1.1 Session Bean Entity Bean CMP EJB 2.0 Session Bean Entity Bean CMP Message Bean

143 Metody ejb... W przypadku komponentów Entity należy w klasie komponentu zdefiniować dodatkowe metody ejbcreate, ejbpostcreate oraz ejbremove setentitycontext i unsetentitycontext ejbactivate, ejbpassivate ejbload, ejbstore Metody ejbfind... Metody ejb... umożliwiają wprowadzanie dodatkowego kodu przez projektanta komponentu 143

144 Sterowanie cyklem życia Entity Bean 2 Utrwalenie danych EJB 1 Tworzenie EJB ejbcreate() 3 4 Pasywność EJB ejb Stor e() ejbpasivate() e jba ctivate() Aktywacja EJB ejbload() e jbremove( ) 5 Odczyt danych EJB 6 Niszczenie EJB Kontener EJB 144

145 Metody ejbcreate, ejbpostcreate oraz ejbremove Metody wywoływane przed i po stworzeniu komponentu przez kontener ejbcreate stworzenie CREATE nowego rekordu w bazie danych reprezentujących stan komponentu ejbremove usunięcie DELETE rekordu z bazy danych reprezentujących stan komponentu (niszczenie komponentu) Entity Bean Baza danych Entity Bean Baza danych 145

146 146 Metody ejbload i ejbstore ejbload uaktualnienie SELECT stanu komponentu z bazy danych Entity Bean Baza danych ejbstore zatwierdzenie UPDATE stanu komponentu w bazie danych Entity Bean Baza danych

147 Trwałość obiektu Trwałość obiektu (object persistance) transmisja stanu entity bean pomiędzy jego instancją enterprise bean, a warstwą pamięci stałej Trwałość Entity Bean: BMP (bean-managed persistence) -bezpośrednia implementacja trwałości w klasie komponentu EJB CMP (container-managed persistence) - zarządzanie trwałością przez kontener 147

148 148 BMP & CMP Bean-Managed Persistance Większy wpływ na sposób wywoływania zapytań SQL Możliwość implementacji starego kodu JDBC Container-Managed-Persistanse Przyspieszenie tworzenia komponentów (automatyzacja tworzenia kodu do obsługi SQL) Plug & Play Bazy danych (projektowany kod nie jest bezpośrednio związany z konkretną bazą danych) Brak bezpośredniego dostępu do bazy danych (hermetyzacja bazy danych przed projektantem)

149 BMP 149

150 BMP Klient Bean create select update delete Baza Danych Kontener Projektant definuje kod odpowiedzialny za trwałość komponentu bean a W tym celu wykorzystuje się biblioteki java.sql.* i javax.sql oraz javax.naming.* 150

151 Wywoływanie metod biznesowych 151 Cykl życia komponentu BMP Entity Bean Class.newInstance() setentitycontext() Komponent nie istnieje unsetentitycontext() ejbhome() Pula komponentów ejbfind() ejbcreate() ejbpostcreate() ejbactivate() ejbload() ejbstore() ejbpasivate() ejbremove() ejbload() Komponent istnieje ejbstore()

152 UserBean <<Interface>> java.rmi.remote <<Interface>> java.io.serializable jdk API <<Interface>> EJBHome <<Interface>> EJBObject <<Interface>> EnterpriseBean javax.ejb API <<Interface>> EntityBean <<Interface>> UserHome <<Interface>> User UserEJB Projektant Komponentu EJB xxxuser EJBHome xxxuser EJBObject xxx UserBean Kontener EJB 152

153 Interfejs domowy EJBHome UserHome.java Metoda create Metoda findbyprimarykey Interfejs domowy w komponentach Entity zawiera metody create oraz metody do wyszukiwania pojedynczego lub wielu komponentów findbyxxx np. findbyprimarykey 153

154 Interfejs zdalny EJBObject User.java Metody biznesowe Interfejs zdalny w komponentach zawiera metody biznesowe zadeklarowane przez projektanta. Takie metody muszą zostać zaimplementowane w kodzie klasy komponentu. 154

155 155 Klasa komponentu Entity Bean a UserBean.java Pola komponentu zatwierdzane w bazie danych (pola prywatne) Deklaracja obiektu połączenia oraz nazwy bazy danych (wykorzystanie bibliotek java.sql i javax.sql) Zdefiniowanie metod biznesowych (metody dostępu do pól komponentu EJB)

156 156 Klasa komponentu Entity Bean a UserBean.java Ustalanie i usuwanie kontekstu komponentu W metodach zdefiniowano kod do otwierania i zamykania bazy danych

157 157 Klasa komponentu Entity Bean a UserBean.java Metody ejbcreate oraz ejbpostcreate Funkcja wstawiania rekordu do bazy danych

158 158 Klasa komponentu Entity Bean a UserBean.java Metoda ejbremove Funkcja usuwania rekordu z bazy danych

159 159 Klasa komponentu Entity Bean a UserBean.java Metoda ejbactivate powoduje aktywację komponentu (może zostać wybrany istniejący komponent z puli komponentów) Metoda ejbpassivate powodująca uśpienie komponentu (nie następuje niszczenie komponentu, ale jego zwolnienie i zwrócenie do puli komponentów)

160 160 Klasa komponentu Entity Bean a UserBean.java Metoda ejbload Funkcja pobiera rekord z bazy danych

161 161 Klasa komponentu Entity Bean a UserBean.java Metoda ejbstore Funkcja aktualizacji rekordu bazy danych

162 162 Klasa komponentu Entity Bean a UserBean.java Metoda ejbfindbyprimarykey Funkcja wyszukująca rekord o określonym kluczu głównym (login)

163 163 Komponent EJB Komponent EJB UserBean Źródło bazy danych jdbc/portaldb

164 164 Komponent WEB Komponent webowy Deklaracja referencji komponentu UserBean

165 Aplikacja klienta 165

166 166 Nowy obiekt home.create(...) Wywołanie metody home.create interfejsu domowego komponentu EJB

167 167 Wyszukiwanie obiektu findbyprimarykey(...) Wywołanie metody home.findbyprimarykey interfejsu domowego komponentu EJB

168 168 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów

169 169 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów home.findmethod(arg) findmethod(arg) SELECT - Wyszukiwanie return EJB object(s) return primary_key(s) danych spełniających (arg) Obsługa wyszukiwania obiektu(ów) spełniających określone kryterium

170 170 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów Home.findMethod(arg) return new EJB object(s) findmethod(arg) return primary_key(s) Obsługa wyszukiwania obiektu(ów) spełniających określone kryterium home.create(arg) new EJB object ejbcreate(arg) return primary_key(s) ejbcreate(arg) Obsługa metody create SELECT - Wyszukiwanie danych spełniających (arg) CREATE - stworzenie entity bean a w bazie danych

171 171 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów Home.findMethod(arg) return new EJB object(s) findmethod(arg) return primary_key(s) Obsługa wyszukiwania obiektu(ów) spełniających określone kryterium home.create(arg) new EJB object ejbobject.method(arg) ejbcreate(arg) return primary_key(s) ejbcreate(arg) Obsługa metody create method(arg) Obsługa metod biznesowych SELECT - Wyszukiwanie danych spełniających (arg) CREATE - stworzenie entity bean a w bazie danych

172 172 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych ejbstore() ejbpasivate() Uśpienie instancji komponentu UPDATE uaktualnienie bean a w bazie danych

173 173 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych ejbstore() ejbpasivate() Uśpienie instancji komponentu UPDATE uaktualnienie bean a w bazie danych ejbobject.method(arg) ejbactivate() ejbload() SELECT odczyt bean a z bazy danych method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych

174 174 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych ejbstore() ejbpasivate() Uśpienie instancji komponentu UPDATE uaktualnienie bean a w bazie danych ejbobject.method(arg) ejbactivate() ejbload() SELECT odczyt bean a z bazy danych method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych ejbobject.remove() or home.remove(...) ejbremove() Obsługa metody remove DELETE usunięcie bean a z bazy danych

175 175 Diagram sekwencji BMP EntityBean Klient Kontener Bean Baza Danych ejbstore() ejbpasivate() Uśpienie instancji komponentu UPDATE uaktualnienie bean a w bazie danych ejbobject.method(arg) ejbactivate() ejbload() SELECT odczyt bean a z bazy danych method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych ejbobject.remove() or home.remove(...) ejbremove() Obsługa metody remove DELETE usunięcie bean a z bazy danych unsetentitycontext() Usunięcie instancji komponentu bean z puli komponentów

176 CMP 176

177 177 CMP Klient Bean create select update delete Baza Danych Kontener Projektant nie definuje kodu odpowiedzialnego za trwałość komponentu bean a (za trwałość komponentu odpowiedzialny jest kontener)

178 178 CMP Odciążenie projektanta (automatyzacja) od ingerencji w struktury baz danych (SQL) Model EJB Deskryptory rozmieszczenia Mapowanie Schemat Bazy Danych DDL Bazy Danych Model komponentu stworzony przez projektanta Automatyzacja implementująca model komponentu i odwzorowująca jego schemat w bazie danych

179 BMP CMP Uproszczenie procesu projektowania (automatyczna obsługa trwałości) Skupienie się na logice (metodach i danych biznesowych) 179

180 Wywoływanie metod biznesowych 180 Cykl życia komponentu CMP Entity Bean Class.newInstance() setentitycontext() Komponent nie istnieje unsetentitycontext() ejbhome() Pula komponentów ejbfind() lub ejbselect() ejbcreate() ejbpostcreate() ejbactivate() ejbload() ejbstore() ejbpasivate() ejbremove() ejbload() Komponent istnieje ejbstore()

181 UserBean <<Interface>> java.rmi.remote <<Interface>> java.io.serializable jdk API <<Interface>> EJBHome <<Interface>> EJBObject <<Interface>> EnterpriseBean javax.ejb API <<Interface>> EntityBean <<Interface>> UserHome <<Interface>> User UserEJB Projektant Komponentu EJB xxxuser EJBHome xxxuser EJBObject xxx UserBean Kontener EJB 181

182 182 Interfejs domowy EJBHome UserHome.java Metoda create Metoda findbyprimarykey Interfejs domowy deklarowany w taki sam sposób jak w przypadku komponentów Entity BMP

183 Interfejs zdalny EJBObject User.java Metody biznesowe Interfejs zdalny w komponentach zawiera metody biznesowe zadeklarowane przez projektanta. Deklaracja taka sama jak w przypadku komponentów BMP Entity 183

184 184 Klasa komponentu Entity Bean a UserBean.java Brak dodatkowych bibliotek (np. java.sql) Pola komponentu zatwierdzane w bazie danych (pola publiczne) Zdefiniowanie metod biznesowych (metody dostępu do pól komponentu EJB) Ustalanie i usuwanie kontekstu komponentu

185 185 Klasa komponentu Entity Bean a UserBean.java Metody ejbcreate oraz ejbpostcreate Puste metody: ejbremove ejbactivate i ejbpassivate ejbload i ejbstore W klasie UserBean (CMP 1.1) brak jest definicji metody findbyprimarykey zadeklarowanej w interfejsie domowym komponentu Obsługą tej metody (i innych metod findbyxxx) zajmuje się kontener

186 186 Wybór pól przeznaczonych do utrwalania w bazie banych Pola przeznaczone do utrwalenia w bazie danych Zadeklarowanie funkcji klucza głównego, która będzie wyszukiwać po polu login i zwracać wynik jako String

187 187 CMP i transakcje Wyłączenie monitorowania metod remove przez zarządzcę transakcji (Remote i Remote Home)

188 188 Mapowanie bazy danych i generacja zapytań SQL Mapowanie źródła bazy danych jdbc/cloudscape Automatyczne generowanie zapytań SQL wywoływanych przez kontener EJB W przykładzie dbms_ejb_cmp_1_1 wykorzystano źródło bazy danych bazy CLOUDSCAPE

189 189 jdbc/cloudscape UserBean Kontener EJB automatycznie utworzył tabelę UserBeanTable do utrwalania pól komponentu UserBean Przykład utrwalenia pojedynczego komponentu EJB (pola zostały utrwalone jako rekord bazy danych)

190 Aplikacja klienta 190

191 191 Nowy obiekt home.create(...) Wywołanie metody home.create interfejsu domowego komponentu EJB

192 192 Wyszukiwanie obiektu findbyprimarykey(...) Wywołanie metody home.findbyprimarykey interfejsu domowego komponentu EJB

193 193 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów

194 194 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów home.findmethod(arg) return EJB object(s) SELECT - Wyszukiwanie danych spełniających (arg) Obsługa wyszukiwania obiektu(ów) spełniających określone kryterium

195 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów home.findmethod(arg) return EJB object(s) SELECT - Wyszukiwanie danych spełniających (arg) Obsługa wyszukiwania obiektu(ów) spełniających określone kryterium home.create(arg) new EJB object ejbcreate(arg) CREATE - stworzenie entity Bean a w bazie danych ejbcreate(arg) Obsługa metody create 195

196 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych newinstance() setentitycontext() Dodanie nowej instancji komponentu bean do puli komponentów home.findmethod(arg) return EJB object(s) SELECT - Wyszukiwanie danych spełniających (arg) Obsługa wyszukiwania obiektu(ów) spełniających określone kryterium home.create(arg) new EJB object ejbobject.method(arg) ejbcreate(arg) CREATE - stworzenie entity Bean a w bazie danych ejbcreate(arg) Obsługa metody create method(arg) Obsługa metod biznesowych 196

197 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych ejbstore() UPDATE uaktualnienie bean a w bazie danych ejbpasivate() Uśpienie instancji komponentu 197

198 198 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych ejbstore() UPDATE uaktualnienie bean a w bazie danych ejbpasivate() Uśpienie instancji komponentu ejbobject.method(arg) ejbactivate() SELECT odczyt bean a ejbload() z bazy danych method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych

199 199 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych ejbstore() UPDATE uaktualnienie bean a w bazie danych ejbpasivate() Uśpienie instancji komponentu ejbobject.method(arg) ejbactivate() SELECT odczyt bean a ejbload() z bazy danych method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych ejbobject.remove() or home.remove(...) ejbremove() DELETE usunięcie bean a z bazy danych Obsługa metody remove

200 200 Diagram sekwencji CMP EntityBean Klient Kontener Bean Baza Danych ejbstore() UPDATE uaktualnienie bean a w bazie danych ejbpasivate() Uśpienie instancji komponentu ejbobject.method(arg) ejbactivate() SELECT odczyt bean a ejbload() z bazy danych method(arg) Aktywacja instancji komponentu i obsługa metod biznesowych ejbobject.remove() or home.remove(...) ejbremove() DELETE usunięcie bean a z bazy danych Obsługa metody remove unsetentitycontext() Usunięcie instancji komponentu bean z puli komponentów

201 CMP 2.0 Klasa komponentu definiowana jako abstrakcyjna (abstract) Brak deklaracji pól trwałych (pola wirtualne), za których tworzenie odpowiada kontener Wymuszenie deklarowania funkcji set/get do pól trwałych Nie powinna być zdefiniowana metoda set dla klucza głównego 201

202 202 Klasa komponentu Entity Bean a UserBean.java Klasa abstrakcyjna Zdefiniowanie abstrakcyjnych metod biznesowych (metody dostępu do pól komponentu EJB) Ustalanie i usuwanie kontekstu komponentu Metody ejbcreate oraz ejbpostcreate

203 203 Wybór pól przeznaczonych do utrwalania w bazie banych Pola przeznaczone do utrwalenia w bazie danych Zadeklarowanie funkcji klucza głównego, która będzie wyszukiwać po polu login i zwracać wynik jako String

204 Mapowanie bazy danych i generacja zapytań SQL Mapowanie źródła bazy danych jdbc/cloudscape Automatyczne generowanie zapytań SQL wywoływanych przez kontener EJB (możliwość wywoływania zapytań w EJB QL 204

205 Aplikacja klienta 205

206 206 Nowy obiekt home.create(...) Wywołanie metody home.create interfejsu domowego komponentu EJB

207 207 Wyszukiwanie obiektu findbyprimarykey(...) Wywołanie metody home.findbyprimarykey interfejsu domowego komponentu EJB

208 Dodanie metody findbyall() interfejs domowy 208

209 Dodanie metody findbyall() zapytanie EJB QL SELECT Object(o) from UserBean as o 209

210 Dodanie metody findbyall() aplikacja klienta 210

211 JNLP 211

212 JNLP JNLP Java Network Launching Protocol Archiwum JAR aplikacji klienta Lokalizacja archiwum wskazywana jest przez lokalizator URI lub file:/// Aplikacja klienta Komputer Klienta Java Web Start 212

213 JNLP - przykład <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase=" href="baner.jnlp"> <information> <title>systemy Rozproszone - BANER</title> <vendor>technical University of Koszalin</vendor> <homepage href=" <description>przykład</description> <description kind="short">baner</description> <description kind="tooltip">baner</description> <icon href="gfx/icon.gif"/> <offline-allowed/> </information> <resources> <j2se version="1.3+"/> <jar href="baner.jar"/> </resources> <application-desc main-class="systemy.rozproszone.baner"/> </jnlp> Lokalizacja plików:

214 JNLP - przykład <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase=" href="baner.jnlp"> <information> <title>systemy Rozproszone - BANER</title> <vendor>technical University of Koszalin</vendor> <homepage href=" <description>przykład</description> <description kind="short">baner</description> <description kind="tooltip">baner</description> <icon href="gfx/icon.gif"/> <offline-allowed/> </information> <resources> <j2se version="1.3+"/> <jar href="baner.jar"/> </resources> <application-desc main-class="systemy.rozproszone.baner"/> </jnlp> 214

215 JNLP - przykład <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase=" href="baner.jnlp"> <information> <title>systemy Rozproszone - BANER</title> <vendor>technical University of Koszalin</vendor> <homepage href=" <description>przykład</description> <description kind="short">baner</description> <description kind="tooltip">baner</description> <icon href="gfx/icon.gif"/> <offline-allowed/> </information> <resources> <j2se version="1.3+"/> <jar href="baner.jar"/> </resources> <application-desc main-class="systemy.rozproszone.baner"/> </jnlp> Nazwa archiwum aplikacji oraz nazwa klasy uruchamiającej aplikację klienta java jar baner.jar systemy.rozproszone.baner 215

216 JNDI 216

217 DIT Directory Information Tree (DIT) Pobieranie i zarządzanie informacją DNS LDAP NDS System plików 217

218 Architectura JNDI Poziom Klienta Aplikacja wykorzystuje Naming Service Client za pośrednictwem JNDI API Poziom Serwera Naming Service Serwer zarządza powiązaniami pomiędzy nazwą i obiektem oraz kontroluje słownik nazw LDAP Aplikacja Javy JNDI API (dostęp aplikacji javy do JNDI) Zarządca nazw JNDI JNDI SPI (dostęp JNDI do innych usług) DNS NDS RMI COS JNDI dostęp różnego rodzaju informacji o użytkownikach i zasobach środowiska sieciowego (obiekty katalogowe łączą atrybuty z ich wartościami) 218

219 JNDI DNS Domain Name System LDAP Lightweight Directory Access Protocol NIS Network Information System COS Common Object Services RMI Remote Method Invocation System plików i katalogów Rejestr Windows... i inne systemy nazewnicze 219

220 javax.naming Pakiety: javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi 220

221 221 Context Interfejs Context zawiera ogólny mechanizm nazewniczy JNDI Kontekst - obiekt, którego stan jest zbiorem powiązań nazw z obiektem Context C:\test\przykłady\ przykład1 Sub context Sub context przykład2 Wszystko, co może mieć obiekty podległe jest kontekstem

222 222 Context javax.naming.context Metody kontekstu: lookup() szukanie określonego kontekstu lub zbioru kontekstów list() metoda zwraca listę sub-kontekstów (działanie podobne do polecenia dir) bind() tworzenie kontekstu unbind() kasowanie kontekstu rebind() przemapowanie kontekstu na inny obiekt rename() zmiana nazwy kontekstu

223 223 Context Operacje wiązania nazw (binding) (dodawanie, usuwanie, zmiana nazwy, prze-mapowanie) try { ctx.bind("name", new SampleObjectImpl()); ctx.rebind("name", new SampleObjectImpl()); ctx.unbind("name"); ctx.rename("name", "NewSample"); } catch (NamingException e) { }

224 224 Context Tworzenie i usuwanie SubContext u try { ctx Context childctx = ctx.createsubcontext("child"); ctx.destroysubcontext("child"); } catch (NamingException e) { } child

225 Nazwy UNIX /usr/local/www/katedry/kik DNS LDAP kik.ie.tu.koszalin.pl cn=przemysław Sołtan, o=politechnika Koszalińska, dc=pl NDS Novel Directory Services NIS Network Information Services (Solaris komputery, sieci, drukarki i użytkownicy) LDAP Lightweight Directory Access Protocol 225

226 Wiązanie (Binding) Wiązanie asocjacja nazwy z obiektem (zasobami) Klient Nazwa Obiekt Nazwa Nazwa Obiekt Obiekt Wiązanie w DNS: localhost Wiązanie w systemie plików: nazwa pliku autoexec.bat powiązane jest z rzeczywistym plikiem na dysku 226

227 InitialContext Directory Information Tree (DIT) InitialContext DNS Klient LDAP NDS System plików 227

228 Tworzenie kontekstu 2 ctx.bind( B/C, ) ctx A B C 1 ctx.bind( A/B/C, ) 3 ctx.bind( C, ) Dla porównania tworzenie pliku (mapowanie jego nazwy) C:\test\przykłady \przykład1 \test.java plik przyklad1\test.java 228

229 229 JNDI java:comp/env ejb java:comp/env/ejb/witaj Witaj ctx jms jdbc java:comp/env/jdbc/cloudscape Cloudscape java:comp/env/jdbc java:comp/env/jms

230 DirContext javax.naming.dircontext DirContext jest to kontekst posiadający atrybuty search() szukanie określonego kontekstu lub zbioru kontekstów getschemaclassdefinition() zwracanie informacji o obowiązkowych atrybutach określonego DirContextu getschema() zwracanie informacji o wszystkich DirContext ach systemu nazewniczego getattributes() zwracanie zbioru atrybutów określonego kontekstu katalogu 230

231 231 Mieszanie kontekstów Kontekst początkowy DirContext DirContext Context Context DirContext można uważać za Context (przeciążanie metod nowymi sygnaturami) DirContext Kontekst końcowy

232 232 Dostawcy usług javax.naming.spi SPI (Service Provider Interface) interfejs dostawcy usług (klej łączący systemy nazewnicze) tworzenie dostawcy usług np. oprogramowanie do komunikacji z systemem nazewniczym jakim jest rejestr windows Aplikacja Javy JNDI API (dostęp aplikacji javy do JNDI) Zarządca nazw JNDI JNDI SPI (dostęp JNDI do innych usług) Moja usługa DNS NDS LDAP

233 Przykład Converter Przeglądarka internetowa Klient Kontener WEB Strona JSP ejb/theconverter Kontener EJB EJB ConverterBean Lookup MyConverter Binding Serwer JNDI Serwer Aplikacji 233

234 234 Przykład Converter Binding Serwer JNDI MyConverter Lookup

235 235 JNDI Kontener EJB EJB ConverterBean MyConverter Serwer MJNDI Converter.jsp ejb/theconverter MyConverter yc onv erter Kontener WEB

236 JNDI Tutorial 236

237 LDAP 237

238 238 LDAP LDAP (Lightweight Directory Access Protocol) specyfikacja protokołu klient- serwer służącego do pobierania i zarządzania informacjami Klient LDAP informacja Serwer LDAP Pierwotnym zamierzeniem miało być stworzenie sposobu dostępu do usług katalogowych X.500

239 239 LDAP Implementacja LDAP początek lat dziewięćdziesiątych (uniwersytet Michigan) aktualna 3 wersja protokołu (rok 1997) Opis standardu: RFC 1777 RFC 2251 RFC - Request For Comments (nieformalne dokumenty definiujące standardy internetowe)

240 240 LDAP Projektant systemu Protokół dostępu do danych Serwer LDAP zawiera informacje kontaktowe (np. książka adresowa) Klient LDAP (Outlook) Serwer LDAP Klient (Przeglądarka) Serwer aplikacji

241 LDAP Repozytorium danych używanych przez aplikacje sieciowe: adresy URL zasobów sieciowych adresy Klucze do bezpiecznej komunikacji sieciowej (PGP, PKI) Network Information Service baza zawierająca informacje o systemach komputerowych, serwerach, użytkownikach, urządzeniach sieciowych,

242 242 LDAP Integrator systemów Wymiana danych między niezgodnymi ze sobą aplikacjami serwer LDAP stanowi warstwę pośrednią Klient LDAP (Outlook) Serwer LDAP Klient LDAP (Netscape) Baza Danych

243 243 LDAP Administrator Przechowywanie informacji o systemie np. hasła użytkowników autoryzacja poprzez wywołanie zapytania do serwera LDAP Komputer z systemem Windows Komputer z systemem Linux Serwer LDAP Komputer z systemem Solaris Autoryzacja

244 Drzewo katalogów dc=pl dc=org dc=com dc=koszalin Organizacja o=pk Jednostka organizacyjna ou=kik ou=we ou=wm ou=wbiiś Osoba uid=przemysław Sołtan 244

245 Drzewo katalogów dc=pl dc=org dc=com dc=koszalin dc=pl,dc=koszalin,o=pk,ou=we, ou=kik,uid=przemysław Sołtan o=pk ou=we ou=wbiiś ou=kik ou=wm uid=przemysław Sołtan 245

246 246 LDAP Browser/Editor

247 247 OpenLDAP konfiguracja Serwer (plik konfiguracyjny slapd.conf) Schematy Klient LDAP Deklaracja lokalizacji bazy danych, bazowego kontekstu oraz użytkownika

248 248 Klient LDAP Klient LDAP

249 249 LDAP uwierzytelnianie, poświadczanie tożsamości, autentykacja hasła dokumenty poświadczające tożsamość karty elektroniczne (smartcards) techniki kryptograficzne LDAP jako repozytorium haseł, certyfikatów kluczy publicznych itp.

250 250 LDAP autoryzacja Access Control Lists - prawa dostępu do określonych zasobów sieciowych, danych, usług opieranie się na wynikach procesu uwierzytelnienia uwzględnianie przynależności do grup Problemy: sposób zapisu danych autoryzacji (magazynowanie) sposób przekazywania danych (transfer np. SSL) aktualność danych (np. ustalanie okresów ważności certyfikatów) wymuszanie stosowania polityki dot. autoryzacji

251 251 Autoryzacja - Tomcat Server.xml

252 252 Schematy Schemat core.schema

253 253 java.schema Attribute Type Definitions javaclassname javaclassnames javacodebase javaserializeddata javafactory javareferenceaddress javadoc Object Class Definitions javacontainer javaobject javaserializedobject javamarshalledobject javanamingreference

254 Plik LDIF dc=portal,dc=pl o=tomcat ou=users ou=role cn=admin cn=kerk LDIF (LDAP Interchange Format) 254

255 Zalety: Wady: LDAP małe wymagania sprzętowe brak możliwości odczytania zaszyfrowanych haseł anonimowe pobieranie danych (poza hasłami) wykorzystanie standardowych narzędzi do zarządzania danymi łatwe tworzenie kopii brak implementacji transakcji przystosowanie do przechowywania niewielkich rekordów w postaci hierarchicznych struktur 255

256 LDAP Zastosowania: autoryzacja na stronach WWW źródło informacji o użytkownikach Hierarchiczna struktura organizacji lokalizacja (kraj, miasto, województwo, jednostka organizacyjna, oddział,... ) Możliwość rozbudowy usług LDAP dodanie dodatkowych maszyn obsługujących poszczególne gałęzie drzewa katalogu 256

257 257 LDAP Searcher filter (objectclass=person) OR & AND! NOT = równy (cn=kerk) >= większy-równy <= mniejszy-równy =* wszystko (cn=*) ~= różne (&(objectclass=person)(cn=kerk)) cn=kerk

258 Książka adresowa (Outlook) 258

259 Ustawienia do komunikacji 259

260 Usługi katalogowe LDAP Netscape Directory Server Sun Microsystems Directory Services IBM DSSeries LDAP Directory LDAPSRV IBM OS/390 U-Mich LDAP Open Source OpenLDAP Open Source Innosoft s Distributed Directory Server NDS NetWare Directory Services Lotus Domino Active Directory Microsoft Cisco Networking Services for Active Directory 260

261 Serwery LDAP Klient połączenie z serwerem i przesłanie zapytania Serwer odesłanie odpowiedzi lub przekazanie odsyłacza do innego serwera powiązania pomiędzy serwerami LDAP są dla klienta przezroczyste (dla klienta jest to zawsze taka sama struktura katalogów) Serwer LDAP Klient LDAP Serwer LDAP Serwer LDAP Serwer LDAP 261

262 262

263 Transakcje 263

264 264 Model ACID ATOMIC atomowe (niepodzielne) CONSISTENCY spójne (w przypadku, gdy któryś z elementów transakcji się nie wykonał to cała transakcja powinna zostać anulowana) ISOLATED izolowane (zmiany są widoczne dopiero po ich zatwierdzeniu) DURABLE trwałe (wynik zatwierdzonej transakcji jest dobrze zapisany w systemie i nie zginie w czasie awarii)

265 Rodzaje transakcji (Entity BMP) 265

266 266 Rodzaje transakcji Bean managed - bean wprowadza swoja własną transakcje, bazując na swoich specyfikacjach Not Supported - metoda nie obsługuje transakcji Supported - metoda obsługuje transakcje, ale jej nie wymaga

267 267 Rodzaje transakcji (Entity CMP) Specyfikacja EJB wymusza określone transakcje dla komponentów CMP

268 268 Rodzaje transakcji Required - metoda wymaga transakcji (jeżeli wywołuje ją metoda nie będąca transakcją, jest tworzona nowa transakcja) Requires New - metoda zawsze wymaga nowej transakcji Mandatory - metoda wymaga, aby metoda wywołująca posiadała transakcje

269 269 Poziom izolacji Odczyt niezatwierdzony (dirty read) w obrębie jednej transakcji (T2) widać niezatwierdzone zmiany przeprowadzone przez inną transakcję(t1) Transakcja T1 modyfikuje rekord Transakcja T2 odczytuje rekord Transakcja T1 zostaje wycofana (rollback) Transakcja T2 posiada nieprawdziwe dane

270 Poziom izolacji Odczyt niepowtarzalny (nonrepeatable read) Wywołanie tego samego zapytania w jednej transakcji daje różne wyniki Transakcja T1 odczytuje rekord Transakcja T2 zmienia rekord Transakcja T1 ponownie odczytuje rekord i otrzymuje inne dane 270

271 271 Poziom izolacji Odczyt widm (phantom read) Wywołanie tego samego zapytania w jednej transakcji powoduje pojawienie się rekordów, których wcześniej nie było Transakcja T1 odczytuje rekordy Transakcja T2 dodaje nowe rekordy Transakcja T1 ponownie odczytuje rekordy i otrzymuje inną ich liczbę

272 272 Izolacja Izolacja zwiększenie obciążenia systemu zwiększenie ryzyka zaistnienia zakleszczeń zmniejszenie równoległego dostępu do tych samych danych zmniejszenie wydajności

273 273 CMT Contanier-Managed Transactions

274 274 Zarządca transakcji Transakcje JTA (globalne) Session Bean Entity Bean Entity Bean Transakcje JDBC (lokalne) servlet Zarządca transakcji Zarządca zasobów Zarządca zasobów

275 Java Transaction API (JTA) Interfejs wspierający rozproszone transakcje wykorzystywany przez mechanizmy J2EE Technologia J2EE definiuje transakcje w sposób deklaratywny (serwer aplikacji J2EE) commit (zachowanie transakcji) rollback (anulowanie transakcji) 275

276 276 Transakcja w EJB TRANSAKCJA klient Bean Bean Bean

277 277 Czas transakcji DŁUGA TRANSAKCJA begin commit KRÓTKIE TRANSAKCJE begin abort begin commit Przedział czasu bez transakcji

278 278 CMR Contanier-Managed Relationships

279 279 Relacje (relationships) 1 1 One-to-one (1:1) 1 * One-to-many (1:N) * * Many-to-many (M:N)

280 280 Komponet UserBean Pole name nie podlega persystencji

281 LocalUser.java UserBean login pass Akcesory dostępu do komponentu NameBean (deklaracja wymagana w celu powiązania z komponentami NameBean dla relacji One-to-One) 281

282 LocalUserHome.java UserBean login pass Interfejs domowy posiada taką samą postać (deklaracje metod) jak w przypadku komponentu UserBean CMP (jedyną róźnicą jest zastosowanie interfejsu lokalnego, ale nie jest to związane z relacjami) 282

283 UserBean.java UserBean login pass Akcesory dostępu do komponentu NameBean (deklaracja wymagana w celu powiązania z komponentami NameBean dla relacji One-to-One) UserBean getname i setname NameBean 283

284 284 UserBean.java (cd) UserBean login pass Reszta metod definiowana tak samo jak UserBean CMP

285 285 Komponet NameBean Pole user nie podlega persystencji

286 LocalName.java NameBean firstname lastname login Akcesory dostępu do komponentu UserBean (deklaracja wymagana w celu powiązania z komponentami NameBean dla relacji One-to-One) 286

287 LocalNameHome.java NameBean firstname lastname login Interfejs domowy posiada metodę create do tworzenia komponentu składającego się z trzech pól: login, firstname i lastname Pole login jest kluczem głównym tak samo jak w UserBean 287

288 NameBean.java NameBean firstname lastname login Standardowa metoda tworząca komponent 288

289 NameBean.java NameBean firstname lastname login Akcesory dostępu do komponentu UserBean (deklaracja wymagana w celu powiązania z komponentami UserBean dla relacji One-to-One) UserBean getuser i setuser NameBean 289

290 One-to-One 290

291 291 User Name UserBean login pass kerk j2ee NameBean firstname lastname login Przemysław Sołtan kerk UserBean 1 1 NameBean

292 JMS 292

293 293 Komunikaty System Obsługi Komunikatów sposób na komunikacje pomiędzy elementami aplikacji lub nawet całymi aplikacjami rozproszenie komunikacji pomiędzy luźno powiązanymi elementami asynchroniczność komunikacji (nadawca i odbiorca nie muszą być osiągalni w tym samym czasie)

294 Nadawca Odbiorca Nadawca dokąd wysłać? co wysłać? (format komunikatu) Odbiorca skąd odebrać jak odczytać (format komunikatu) 294

295 295 Java Message Service API JMS tworzenie, wysyłanie i odbiór komunikatów z poziomu javy Dodatkowa funkcjonalność: asynchroniczność niezawodność (upewnienie się, że komunikat został dostarczony do odbiorcy (raz i tylko raz)

296 296 Topologia Klient JMS Klient JMS Klient JMS Klient JMS Broker komunikatów Klient JMS

297 297 Zastosowanie Niezależność komponentów (łatwiejsza modyfikacja części systemu) Funkcjonowanie aplikacji przy nieaktywności części komponentów (przesyłanie komunikatów do odbiorców, którzy nie są aktualnie dostępni)

298 298 Dostawcy usług JMS Klient Klient Klient Klient Java Message Services (JMS) API ibus Sun Java Message Queue MQSeries Inne serwery JMS

299 JMS API JMS Provaider system implementujący interfejsy JMS i umożliwiający komunikację (kontrola i administracja) JMS Clients aplikacje wysyłajce i odbierające komunikaty Messages obiekty przenoszące informację pomiędzy klientami JMS Administered object tworzone wcześniej obiekty przez administratora do użytku przez klientów 299

300 Rodzaje komunikacji Klient JMS Klient JMS Message Queue Klient JMS Point-to-Point (PTP) Klient JMS Klient JMS Klient JMS Publish/Subscribe (pub/sub) Klient JMS Klient JMS Topic Klient JMS Klient JMS 300

301 301 Point-to-Point Komunikacja oparta jest na kolejce komunikatów Klient 1 Kolejka komunikatów EJB Klient 2 klient wysyła komunikat do określonej kolejki Inny klient odbiera ten komunikat z kolejki Odbiorca informuje o prawidłowym odebraniu komunikatu

302 Point-to-Point Kolejka przechowuje komunikaty: dopóki nie zostaną odebrane komunikat zostanie przeterminowany Komunikat posiada co najwyżej jednego odbiorcę komunikat może zostać wysłany nawet wtedy, gdy odbiorca jeszcze nie istnieje (wysyłanie odbywa się do kolejki, a nie do klienta) Umożliwia to niezależność działania nadawcy i odbiorcy komunikatu 302

303 Pub/Sub Komunikacja oparta jest na publikowaniu komunikatów na dany temat i ich subskrybowaniu przez wielu klientów EJB Klient 2 Klient 1 EJB Klient 3 Komunikaty na dany temat klient publikuje komunikat inni klienci subskrybują dostępne komunikaty 303

304 304 Pub/Sub Może istnieć... Wielu klientów publikujących komunikaty (publikowanie) Wielu klientów odbierających komunikaty (subskrybcja) Klient odbierający komunikaty ma dostęp tylko do tych komunikatów, które pojawiły si ę gdy był zarejestrowany u provaidera (brak dostępu do wcześniejszych komunikatów)

305 305 Pobieranie komunikatów Synchroniczne klient pobiera komunikat używając metody receive Asynchroniczne Klient rejestruje zdarzenie message listener (pojawienie się komunikatu powoduje wywołanie metody onmessage message Listener a)

306 306 Repozytorium JMS Serwer J2EE wykorzystuje bazę cloudscape do przechowywania komunikatów JMS. Jest to baza JMSDB automatycznie zakładana w katalogu %j2ee%\repository\ <tu nazwa serwera>\db\jmsdb To w jaki sposób realizowana jest persystencja komunikatów JMS zależy od twórcy serwera J2EE (projektant aplikacji nie ingeruje w trwałość komunikatów JMS)

307 307 Poit-to-Point Pub/Sub JMS Typ Fabryka połączeń Fabryka Sesja Wytwórca komunikatu Odbiorca komunikatu Pub/Sub Topic TopicConnectionFactory TopicConnection TopicSession TopicPublisher TopicSubscriber Point-to-Point Queue QueueConnectionFactory QueueConnection QueueSession QueueSender QueueReceiver, QueueBrowser

308 Administered Objects QueueConnestionFactory & TopicConnectionFactory obiekt służący do ustalenia połączenia z provaiderem Context ctx = new InitialContext(); QueueConnectionFactory queueconnectionfactory = (QueueConnectionFactory)ctx.lookup("QueueConnectionFactory"); TopicConnectionFactory topicconnectionfactory = (TopicConnectionFactory)ctx.lookup("TopicConnectionFactory"); 308

309 JMS Connection Factories 309

310 Destination Destination obiekt określający miejsce do którego, lub z którego ma zostać pobrany komunikat j2eeadmin -addjmsdestination <queue_name> queue j2eeadmin -addjmsdestination <topic_name> topic j2eeadmin -listjmsdestination 310

311 Destination 311

312 Connection Connection obiekt reprezentujący połączenie klienta JMS z provaiderem QueueConnection queueconnection = queueconnectionfactory.createqueueconnection(); TopicConnection topicconnection = topicconnectionfactory.createtopicconnection();... queueconnection.close(); topicconnection.close(); Zamknięcie połczenia 312

313 Session Session obiekt sesji używany jest do tworzenia obiektu wytwórcy lub odbiorcy komunikatu QueueSession queuesession = queueconnection.createqueuesession(true, 0); TopicSession topicsession = topicconnection.createtopicsession(false, Session.AUTO_ACKNOWLEDGE); 313

314 Message producers Obiekt stworzony przez obiekt Session wysyłanie komunikatów QueueSender queuesender = queuesession.createsender(myqueue);... queuesender.send(message); TopicPublisher topicpublisher = topicsession.createpublisher(mytopic);... topicpublisher.publish(message); 314

315 Message consumers Obiekt stworzony przez obiekt Session odbieranie komunikatów wysłanych do destination QueueReceiver queuereceiver = queuesession.createreceiver(myqueue);... queueconnection.start(); Message m = queuereceiver.receive(); Sposób synchroniczne go pobierania komunikatów TopicSubscriber topicsubscriber = topicsession.createsubscriber(mytopic);... topicconnection.start(); Message m = topicsubscriber.receive(1000); 315

316 Message listeners Obiekt przeznaczony do asynchronicznej obsługi adbierania komunikatów implementacja metody onmessage przez interfejs MessageListener TopicListener topiclistener = new TopicListener(); topicsubscriber.setmessagelistener(topiclistener); 316

317 Komunikat Komunikat = informacja + określony format Komunikat = nagłówek + zawartość Nagłówek zawiera: pola określające przeznaczenie, typ komunikatu, identyfikator, priorytet, trwałość Komunikat Nagłówek Właściwości (opcjonalnie) Ciało (opcjonalnie) Ciało: TextMessage, MapMessage, ByteMessage, StreamMessage, ObjectMessage 317

318 318 Message selectors Obsługa odrzucania komunikatów każdy selektor jest łańcuchem tekstowym składnia jest podzbiorem SQL92 określanie kryteriów jedynie na podstawie nagłówka i właściwości odrzucanie komunikatów odbywa się po stronie provaidera

319 319 Wysyłanie i odbieranie komunikatu... TextMessage msg = queuesession.createtextmessage(); msg.settext( Mój komunikat ); queuesender.send(msg);... Message m = queuereceiver.receive(); if (m instanceof TextMessage) { TextMessage msg = (TextMessage) m; System.out.println(msg.getText()); }

320 320 Message Driven Beans

321 Ziarenka EJB J2EE Message-Driven EJB Session EJB BMP Entity EJB CMT (Container-Managed Transactions) BMT (Bean-Managed Transactions) Stateless Stateful CMT (Container-Managed Transactions) BMT (Bean-Managed Transactions) Interfejsy Remote i Local Interfejsy Remote i Local CMP Entity EJB Powiązane komponenty CMP Entity EJB Obsługa tabeli z podłączonej bazy danych Obsługa EJB-QL Interfejsy Remote i Local Obsługa tabel z podłączonej bazy danych CMR (Container-Managed Relationships) Interfejsy Remote i Local 321

322 322 Servlet Message Bean Serwer aplikacji Kontener WEB Servlet Kolejka komunikatów Kontener EJB EJB

323 Odbiornik JMS MDB 323

324 Odbiornik JMS MDB 324

325 Nadajnik JMS JSP 325

326 Nadajnik JMS JSP 326

327 JMS & EJB JMS Klient Queue Message Driven Bean EJB Przeglądarka WWW JSP Queue1 EJB Queue2 Message Driven Bean Przetwarzanie komunikatów przez różnych klientów 327

328 328 Komponety EJB klient klient klient Session Session Bean Session Bean Bean Entity Entity Bean Entity Bean Bean Message Queue Session Session Bean Session Bean Bean Entity Entity Bean Entity Bean Bean klient Message Driven Bean Entity Entity Bean Entity Bean Bean

329 329

330 JavaMail 330

331 331 James serwer pocztowy Uruchomienie serwera pocztowego: /bin/run.bat Usługi pocztowe: POP3 port 110 SMTP port 25 NNTP port 119

332 James serwer pocztowy Administracja serwerem: telnet localhost 4555 Logowanie: login: root passwd: root Dodanie użytkownika: adduser Lista użytkowników: listusers Ze względów bezpieczeństwa należy zmienić hasło administratora serwera pocztowego James (plik /apps/james/conf/config.xml) 332

333 James serwer pocztowy Przesłanie poczty na serwer (SMTP): Serwer (James) Klient pocztowy (The Bat) Katalog użytkownika serwera pocztowego zawiera pocztę przesłaną przez klienta 333

334 334 James serwer pocztowy Odbiór poczty z serwera (POP3): Serwer (James) Klient pocztowy (The Bat)

335 335 SMTP & POP3 Nadawca (Outlook) Odbiorca (Outlook) SMTP Serwer pocztowy JAMES POP3

336 Web Services 336

337 337 Rodzaje systemów Biznes Consumer B2B Biznes to Biznes portale internetowe B2C Biznes to Consumer C2C Consumer to Consumer domy aukcyjne Biznes zakupy przez internet Consumer C2B Consumer to Biznes

338 338 e-commerce & e-business e-commerce - kupowanie i sprzedawanie za pośrednictwem mediów cyfrowych (transakcje) e-business - e-commerce wraz z intranetowymi aplikacjami służącymi do lepszego zarządzania firmą (strategia) Wykorzystuje się standardowe modele biznesowe z zastosowaniem nowych technologii

339 339 Rozwój systemów e-biznesu Publikowanie informacji w sieci WEB Dostęp do danych biznesowych (tylko do odczytu) Realizacja transakcji biznesowych (systemy online) Web Services - komunikacja systemów biznesowych

340 340 Web Services Usługi sieciowe (Web Services) odnajdywanie w sieci usługi spełniającej zadane kryterium i zdalne wywołanie (zautomatyzowany proces biznesowy) niezależność od platformy, niezależność od formatu danych, niezależność od języka programowania, niezależność od implementacji

341 Uruchomienie usługi Usługi sieciowe utworzenie usługi oraz zdefiniowanie interfejsów i metod jej wywołania publikowanie usługi rejestracja usługi (umożliwienie odnalezienia usługi przez potencjalnych odbiorców) zdalne wywołanie przez klienta 341

342 Usługi WWW i J2EE Przeglądarka HTML HTTP Kontener WEB Klient Biznesowy (web service) Aplikacja Javy SOAP RMI-IIOP JSP i servlety R MI- II O P Kontener EJB EJB Applet Klient C++ Klient JMS RMI-IIOP CORBA-IIOP JMS EJB 342

343 Architektura kompozytowa Architektura korzystająca z rozproszonego odnajdywania usługowych zasobów programowych dynamiczne odnajdywanie elementów logiki biznesowej oddzielenie logiki biznesowej od jej implementacji zdolność automatycznego zestawiania usług (zespołów przetwarzania danych) 343

344 SOAP i WSDL SOAP System 1 System 2 WSDL Komunikacja dwóch systemów za pomocą protokołu SOAP i języka opisu usług WSDL (Web Services Description Language) 344

345 345 XML jako nośnik danych Dane XML Komunikacja HTTP Kod JAVA

346 Fundamenty Web Services XML - format wymiany i opisu danych SOAP - protokół wywoływania Web Services i przekazywania wiadomości WSDL - format opisu Web Services UDDI - miejsce wyszukiwania i rejestrowania Web Services 346

347 SOAP Simple Object Access Protocol (SOAP) protokół wymiany informacji w środowisku rozproszonym oparty o język XML w oparciu o przesyłanie TCP/IP opis zawartości informacji i sposób jej przetworzenia zestaw reguł definiujących typy danych sposób wywoływania oraz odpowiedzi zdalnych procedur 347

348 348 SOAP Publikowanie usługi na serwerze webowym Serwer Webowy (Repozytorium) Klient 1 Usługa Sieciowa

349 349 SOAP Wywołanie żądania wykonania usługi przez klienta 2 GET HTTP Serwer Webowy (Repozytorium) Klient 1 Usługa Sieciowa

350 350 SOAP Przesłanie z serwera do klienta dokumentu WSDL opisującego usługę 2 GET HTTP Dokument WSDL 3 Serwer Webowy (Repozytorium) Klient 1 Usługa Sieciowa

351 Usługa WSDL 351

352 352 Dokument WSDL Klient (java,c++,perl,.net,...) WSDL Usługa Sieciowa (java,c++,perl,.net,...) Dokument XML zgodny ze schematem wsdl

353 353 Struktura dokumentu WSDL Typ Komunikaty Typy portów WSDL - opisuje jakie usługi są udostepniane przez Web Service -jak wywoływać jego operacje - gdzie znaleźć usługę Web Services Wiązania Usługi (Services)

354 354 SOAP Klient przetwarza dokument WSDL i tworzy komunikat SOAP i wysyła do usługodawcy 2 GET HTTP Dokument WSDL 3 Serwer Webowy (Repozytorium) Klient 1 Żądanie SOAP 4 Usługa Sieciowa

355 355 SOAP Usługowawca przetwarza komunikat SOAP i wywołuje odpowiednie metody Wynik zostaje odesłany do klienta w postaci komunikatu SOAP 2 GET HTTP Dokument WSDL 3 Serwer Webowy (Repozytorium) Klient 1 4 Żądanie SOAP Odpowiedź SOAP 5 Usługa Sieciowa Klient odbiera komunikat i przetwarza otrzymane dane

356 356 Klient SOAP Usługa Serwer Webowy (Repozytorium) Usługa Sieciowa... Klient

357 357 Koperta SOAP Deklarację koperty SOAP określa główny znacznik dokumentu XML Drzewo XML envelope header body... Komunikat Header Header Entries Header Entries header entry... body entry... Body Fault

358 358 SOAP Schemat Gramatykę komunikatu SOAP opisuje dokument XMLSchema Wspólna specyfikacja SOAP 1.1 dla wszystkich dostawców usług

359 359 Struktura komunikatu <env:envelope xmlns:env= " env:encodingstyle= " <env:body> <m:getprice xmlns:m="some-uri"> <Item>Book</Item> </m:getprice> </env:body> </env:envelope> Komunikat SOAP posiada odpowiednią strukturę zgodną ze schematem. Wszystko jest opakowane znacznikiem Envelope

360 360 Obsługa błędów <env:envelope xmlns:env= " env:encodingstyle= " <env:body> <env:fault> <faultcode>env:mustunderstand</faultcode> <faultstring>soap Must Understand Error</faultstring> </env:fault> </env:body> </env:envelope> faultcode: kod błędu do użycia przez oprogramowanie faultstring: czytelna dla człowieka nazwa błędu

361 361 HTTP Żądanie POST /StockQuote HTTP/1.1 Host: localhost Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <env:envelope xmlns:env= " <env:body> </env:body> </env:envelope> Zanurzenie komunikatu SOAP w żądaniu HTTP

362 362 HTTP Odpowiedź HTTP/ OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <env:envelope xmlns:env= > <env:body> </env:body> </env:envelope> Zanurzenie komunikatu SOAP w odpowiedzi HTTP

363 Axis Apache extensible Interaction System AXIS SOAP Engine aplikacja szkieletowa (framework) do obsługi protokołu SOAP prosty serwer servlet engin dla Tomcat a wspomaganie dla tworzenia WSDL generacja klas Javy z WSDL (Web Service Description Language) proste przykłady monitor TCP/IP 363

364 364 Aplikacja webowa

365 Validate happyaxis.jsp 365

366 366 Instalacja AXIS+Tomcat Umieszczenie aplikacji webowej na serwerze Tomcat Dodanie zmiennej środowiskowej AXIS_HOME Umieszczenie niezbędnych bibliotek jar na serverze Tomcat TOMCAT_HOME/common/lib jaxrpc.jar saaj.jar

367 TCP Monitor TCP Monitor Tool narzędzie do monitorowania żądań/odpowiedzi protokołu HTTP Klient TCP Monitor Server java org.apache.axis.utils.tcpmon [listenport targethost targetport] 367

368 368 SOAP Monitor javac -classpath WEB-INF/lib/axis.jar SOAPMonitorApplet.java Klient Soap Monitor Server

369 SOAP Monitor Konfiguracja monitora SOAP kompilacja klasy apletu (w katalogu aplikacji webowej axis) javac -classpath WEB-INF/lib/axis.jar SOAPMonitorApplet.java 369

370 Konfiguracja zarządcy AdminManager usunięcie komentarzy z pliku web.xml 370

371 371 Statyczna Inwokacja Lookup 2 GET HTTP Dokument WSDL 3 Serwer Webowy (Repozytorium) Kod klienta 1 Wywołanie usługi 4 Żądanie SOAP Odpowiedź SOAP 5 Usługa Sieciowa

372 372 JWS Java Web Service (JWS) (integracja J2EE z usługami sieciowymi) tworzenie klasy javy reprezentującej usługę WWW Usługa sieciowa Klasa Javy Technologie J2EE Klasę javy umieszcza się (źródło, bez kompilacji) w katalogu aplikacji webowej ze zmianą nazwy ma *.jws

373 373 Web Service proces biznesowy Klient Biznesowy (web service) WSDL żądanie XML 1 8 Przetworzenie XML 2 Servlet Przejście do warstwy bizneowej EJB 3 6 Wywołanie metod biznesowych komponentów EJB 4 EJB 5 SOAP odpowiedź XML 7 Przetworzenie danych Przekazanie danych do serwletu Wywołanie metod biznesowych systemów zewnętrznych

374 374 Dynamiczna Inwokacja Statyczny dokument WSDL KLIENT WSDL Dynamiczna konwersja klas javy na dokumenty WSDL KLIENT dynamic WSDL JAVA class

375 375 Dynamiczna Inwokacja Lookup 2 GET HTTP Dokument WSDL 3 Serwer Webowy (Repozytorium) Dynamiczna generacja kodu klienta 1 Wywołanie usługi 4 Żądanie SOAP Odpowiedź SOAP 5 Usługa Sieciowa

376 376 WSDL2Java java org.apache.axis.wsdl. WSDL2Java

377 377 WSDL2Java java org.apache.axis.wsdl. WSDL2Java Calculator.wsdl Calculator.java CalculatorService.java CalculatorServiceLocator.java CalculatorSoapBindingImpl.java CalculatorSoapBindingStub.java deploy.wsdd undeploy.wsdd

378 378 WSDL2Java Interfejsy opisujące usługę (klasa Calculator z metodami add i subtract)

379 WSDL2Java Wygenerowana klasa z metodami do zdefinowania WSDL2Java projektowanie usług sieciowych przy znanym (zadeklarowanym) formacie plik WSDL 379

380 380 Java2WSDL java org.apache.axis.wsdl.java2wsdl

381 381 Przykład Witaj.java Witaj.jws Przykładową klasę należy umieścić w katalogu aplikacji webowej np. webapps/axis ze zmianą nazwy rozszerzenia na jws

382 Witaj.jws 382

383 383 Witaj.jws?wsdl (1/2) message porttype binding service

384 Komunikaty 384

385 385 Wiązanie Metoda witaj()

386 386 Usługa Nazwa serwisu Nazwa klasy Witaj.java

387 387 Aplikacja klienta Wywołanie usługi

388 UDDI (Universal Description, Discovery and Integration) UDDI system katalogowania usług opisanych za pomocą języka WSDL przeszukiwanie rejestru usług analiza usług manipulacja wpisami Repozytorium WSDL Klient SOAP Serwer SOAP 388

389 389 UDDI (Universal Description, Discovery and Integration) Białe strony podstawowe informacje kontaktowe firmy z unikatowym identyfikatorem Żółte strony Informacje opisujące usługę WWW na podstawie jej klasyfikacji Zielone strony Informacje techniczne opisujące zachowanie usług WWW oraz ich funkcje

390 390 Server java org.apache.axis.transport.http.simpleaxisserver -p 8081

391 391 Server deploy.wsdd java org.apache.axis.client.adminclient deploy.wsdd

Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN. email: kerk@moskit.ie.tu.koszalin.pl

Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN. email: kerk@moskit.ie.tu.koszalin.pl Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN email: kerk@moskit.ie.tu.koszalin.pl 07.11.2002 Co powinieneś znać? Podstawy HTML i XML Programowanie obiektowe w Javie Serwery

Bardziej szczegółowo

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG Budowa aplikacji w technologii Enterprise JavaBeans Maciej Zakrzewicz PLOUG Plan prezentacji Przegląd architektur aplikacji rozproszonych: CORBA, SOAP, EJB Wprowadzenie do Enterprise JavaBeans (EJB) Budowa

Bardziej szczegółowo

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych Plan prezentacji Budowa aplikacji w technologii Enterprise JavaBeans Przegląd architektur aplikacji rozproszonych: CORBA,, Wprowadzenie do Enterprise JavaBeans () Budowa komponentów sesyjnych Budowa komponentów

Bardziej szczegółowo

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek Enterprise JavaBean EJB 2.x oraz zmiany w standardzie dla EJB 3.0 Michał Stanek Plan prezentacji Czym jest EJB Architektura aplikacji J2EE oraz kontener EJB Typy komponentów JavaBean EJB 1.0, EJB 2.x Wady

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans 1. Wprowadzenie. 2. Przegląd komponentów EJB. komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 3. Kontener komponentów EJB: JBoss. 1 Enterprise JavaBeans

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Wprowadzenie do Enterprise JavaBeans 2.0

Wprowadzenie do Enterprise JavaBeans 2.0 71 Wprowadzenie do Enterprise JavaBeans 2.0 Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 72 Wprowadzenie do EJB Rodzaje komponentów Zdalny

Bardziej szczegółowo

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie Java Enterprise Edition spotkanie nr 1 Sprawy organizacyjne, wprowadzenie 1 Informacje organizacyjne Program: Co będzie na tym wykładzie, a czego nie będzie? apteka rolnictwo Java Enterprise Edition vs

Bardziej szczegółowo

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss. 1 Enterprise JavaBeans 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss. 2 Enterprise JavaBeans Enterprise JavaBeans (EJB) to specyfikacja

Bardziej szczegółowo

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Obsługa transakcji rozproszonych w języku j Java Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Plan prezentacji Transakcje i ich własności Proste transakcje w JDBC

Bardziej szczegółowo

Enterprise Java Beans wykład 7 i 8

Enterprise Java Beans wykład 7 i 8 Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Enterprise Java Beans wykład 7 i 8 Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Co to jest EJB Architektura EJB

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

EJB 3.0 (Enterprise JavaBeans 3.0)

EJB 3.0 (Enterprise JavaBeans 3.0) EJB 3.0 (Enterprise JavaBeans 3.0) Adrian Dudek Wirtualne Przedsiębiorstwo 2 Wrocław, 1 czerwca 2010 Plan prezentacji 1 Wprowadzenie Cel prezentacji Czym jest EJB 3.0? Historia 2 3 Cel prezentacji Wprowadzenie

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Budowa komponentów Enterprise JavaBeans

Budowa komponentów Enterprise JavaBeans VII Seminarium PLOUG Warszawa Marzec 2003 Budowa komponentów Enterprise JavaBeans Maciej Zakrzewicz, Marek Wojciechowski mzakrz, marek@cs.put.poznan.pl Politechnika Poznañska Instytut Informatyki Streszczenie

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Java Enterprise Edition WebServices Serwer aplikacji GlassFish Dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki Aplikacje

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html JAVA I BAZY DANYCH ZAGADNIENIA: wprowadzenie; JDBC; komunikacja z bazą danych; HSQLDB. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm

Bardziej szczegółowo

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz Projektowanie oprogramowania Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz 1 Wykonanie czterowarstwowej aplikacji EE z dostępem do bazy danych,

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej 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

Bardziej szczegółowo

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE) Programowanie w języku Java Wykład 13: Java Platform, Enterprise Edition (Java EE) Standard J2EE Programowanie w języku Java 2 J2EE - komunikacja Programowanie w języku Java 3 J2EE warstwa biznesowa Programowanie

Bardziej szczegółowo

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada 2010 Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Programowanie komponentowe 5

Programowanie komponentowe 5 Budowa warstwy klienta w architekturze typu klient-serwer zbudowanych z komponentów typu EE - klient desktopowy i internetowy. Zastosowanie komponentów opartych na technologii EJB 3.2. na podstawie https://docs.oracle.com/javaee/7/jeett.pdf

Bardziej szczegółowo

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Kod szkolenia: Tytuł szkolenia: EJB Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Dni: 3 Opis: Adresaci szkolenia: Szkolenie adresowane jest

Bardziej szczegółowo

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne

Bardziej szczegółowo

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług Wzorce projektowe warstwy usług Wzorce projektowe warstwy usług Service Locator Ułatwia wyszukanie komponentów usługowych Service Activator Umożliwia asynchroniczne przesyłanie żądań do komponentów biznesowych

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1) Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie

Bardziej szczegółowo

J2EE Project TEMATY PROJEKTÓW PRZEMYSŁAW SOŁTAN. (0.2 build 18.12.2004) e-mail: kerk@moskit.ie.tu.koszalin.pl

J2EE Project TEMATY PROJEKTÓW PRZEMYSŁAW SOŁTAN. (0.2 build 18.12.2004) e-mail: kerk@moskit.ie.tu.koszalin.pl J2EE Project PRZEMYSŁAW SOŁTAN e-mail: kerk@moskit.ie.tu.koszalin.pl TEMATY PROJEKTÓW (0.2 build 18.12.2004) Wstęp Tworząc projekty opieramy się na źródłach mojego projektu będącego swego rodzaju szkieletem

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Encyjne komponenty EJB

Encyjne komponenty EJB 132 Encyjne komponenty EJB Marek Wojciechowski Marek.Wojciechowski@cs.put.poznan.pl http://www.cs.put.poznan.pl/mwojciechowski/ Plan rozdziału 133 Wprowadzenie do encyjnych komponentów EJB Cykl życia encyjnego

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz.

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz. Platforma J2EE i EJB Oprogramowanie systemów równoległych i rozproszonych Wykład 9 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Platforma

Bardziej szczegółowo

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje internetowe i rozproszone - laboratorium Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,

Bardziej szczegółowo

Aplikacje Internetowe, Servlety, JSP i JDBC

Aplikacje Internetowe, Servlety, JSP i JDBC Aplikacje Internetowe, Servlety, JSP i JDBC Opis Java 2 Enterprise Edition (JEE) jest potężną platformą do tworzenia aplikacji webowych. PLatforma JEE oferuje wszystkie zalety tworzenia w Javie plus wszechstronny

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

Podstawowe informacje o technologii Java EE 7

Podstawowe informacje o technologii Java EE 7 Podstawowe informacje o technologii Java EE 7 na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe 2 Programowanie komponentowe 2, Zofia Kruczkiewicz 1 I. Wielowarstwowa architektura

Bardziej szczegółowo

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity

Bardziej szczegółowo

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska JAVA EE MODEL APLIKACJI Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Architektura aplikacji 2 Java EE od początku była projektowana z myślą o aplikacjach klasy enterprise

Bardziej szczegółowo

Enterprise JavaBeans (EJB)

Enterprise JavaBeans (EJB) Enterprise JavaBeans (EJB) Wykład prowadzi: Marek Wojciechowski Enterprise JavaBeans (EJB) 1 Plan wykładu Wprowadzenie do technologii EJB Typy komponentów EJB Klienci dla komponentów EJB Transakcje w EJB

Bardziej szczegółowo

Dostęp do baz danych z aplikacji J2EE

Dostęp do baz danych z aplikacji J2EE 47 Dostęp do baz danych z aplikacji J2EE Marek Wojciechowski Marek.Wojciechowski@cs.put.poznan.pl http://www.cs.put.poznan.pl/mwojciechowski/ Plan rozdziału 48 Źródła danych w JDBC Java Naming and Directory

Bardziej szczegółowo

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE 276 Oracle9iAS: instalacja i konfiguracja aplikacji J2EE Marek Wojciechowski Marek.Wojciechowski@cs.put.poznan.pl http://www.cs.put.poznan.pl/mwojciechowski/ Plan rozdziału 277 Przypomnienie architektury

Bardziej szczegółowo

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie systemów informatycznych Przekształcenie

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Wprowadzenie do J2EE. Maciej Zakrzewicz. Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/

Wprowadzenie do J2EE. Maciej Zakrzewicz. Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ 1 Wprowadzenie do J2EE Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji

Bardziej szczegółowo

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1 P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw

Bardziej szczegółowo

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz.

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz. 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

Bardziej szczegółowo

Zagadnienia projektowania aplikacji J2EE

Zagadnienia projektowania aplikacji J2EE 211 Zagadnienia projektowania aplikacji J2EE Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 212 Wstęp Techniki projektowe: Wprowadzenie modułu

Bardziej szczegółowo

Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej

Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej Jarosław Kuchta Wzorce projektowe warstwy biznesowej Wzorce projektowe dotyczące danych, obiektów i logiki biznesowej Transfer Object Assembler Łączy dane pochodzące z różnych komponentów biznesowych Composite

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

Usługa TimerService ejbtimeout() @javax.ejb.timeout

Usługa TimerService ejbtimeout() @javax.ejb.timeout TimerService i JNDI 1. Usługa TimerServiece, interfejsy TimedObject, TimerService, Timer, TimerHandle transakcje, zastosowanie usługi w komponentach EJB, cykl życia EJB, problemy. 2. Zasoby JNDI i wstrzykiwanie,

Bardziej szczegółowo

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż. Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Wstęp Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Założenia do wykładu Zasady zaliczeń Ramowy program wykładu

Bardziej szczegółowo

Zastosowanie komponentów EJB typu Session

Zastosowanie komponentów EJB typu Session Zastosowanie komponentów EJB typu Session na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe Lab1 1 1. Refaktoryzacja kodu programu Sklep_6 z lab5, TINT 1.1. Należy wykonać

Bardziej szczegółowo

Enterprise JavaBeans (EJB)

Enterprise JavaBeans (EJB) Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z sesyjnymi komponentami Enterprise JavaBeans. Zilustrowane będą różnice między komponentami stanowymi i bezstanowymi. Pokazane będzie

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia

Bardziej szczegółowo

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Programowanie komponentowe Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Struktura wykładu 1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application

Bardziej szczegółowo

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Przykłady na podstawie zadań lab. z przedmiotu Technologie internetowe

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Interfejsy w Javie. Przykład zastosowania interfejsów:

Interfejsy w Javie. Przykład zastosowania interfejsów: 1 Plan wykładu 1. Interfejsy w Javie. 2. Zdalne wywołanie metod (Remote Method Invocation). interfejsy w RMI, architektura RMI, przykładowa aplikacja korzystająca z RMI, przekazywanie parametrów, dystrybucja

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML

Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML VIII Konferencja PLOUG Koœcielisko PaŸdziernik 2002 Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML Piotr Wilk Premium Technology Sp. z o.o. PWilk@PremiumTechnology.pl Modelowanie

Bardziej szczegółowo

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008 Adam 1 grudnia 2008 Wstęp Opis Historia Apache kontener serwletów rozwijany w ramach projektu Apache jeden z bardziej popularnych kontenerów Web open source, Apache Software License rozwijany przez ASF

Bardziej szczegółowo

EXSO-CORE - specyfikacja

EXSO-CORE - specyfikacja EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.

Bardziej szczegółowo

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Enterprise Java Beans Narzędzia i Aplikacje Java EE Enterprise Java Beans Narzędzia i Aplikacje Java EE Michał Piotrowski Michał Wójcik Waldemar Korłub Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika

Bardziej szczegółowo

SOP System Obsługi Parkingów

SOP System Obsługi Parkingów SOP System Obsługi Parkingów JEE i Android Marcin Tatjewski Tomasz Traczyk Grzegorz Zieliński Paweł Borycki 5 listopada 2009 www.sopark.pl Plan prezentacji Java Platform, Enterprise Edition (JEE) Wstęp

Bardziej szczegółowo

Stanowe komponenty sesyjne

Stanowe komponenty sesyjne Stanowe komponenty sesyjne 1. Porównanie komponentów stanowych i bezstanowych. 2. Cykl życia stanowego komponentu sesyjnego, 3. Komponenty sesyjne a kontekst utrwalania, 4. Zagnieżdżanie komponentów sesyjnych,

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone Typy przetwarzania Przetwarzanie zcentralizowane Systemy typu mainfame Przetwarzanie rozproszone Architektura klient serwer Architektura jednowarstwowa Architektura dwuwarstwowa Architektura trójwarstwowa

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Maciej Zakrzewicz PLOUG mzakrz@cs.put.poznan.pl Plan prezentacji Wprowadzenie do architektury zorientowanej na usługi Charakterystyka technologii

Bardziej szczegółowo

edziennik Ustaw Opis architektury

edziennik Ustaw Opis architektury edziennik Ustaw Opis architektury Spis treści 1 Wstęp...3 2 Architektura systemu...3 2.1 Schemat poglądowy rozwiązania...3 2.2 Architektura logiczna...4 2.3 Opis elementów systemu...5 2.3.1 Moduł Udostępniający...5

Bardziej szczegółowo

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat. Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat. Serwer Tomcat Plan wykładu Opis serwera Jak uruchomić napisaną aplikację Podstawowa konfiguracja Pierwsze uruchomienie Tomcat

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 2 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Połączenie za pomocą JNDI i DataSource Połączenie za pomocą JNDI i DataSource Krótki wstęp do usług katalogowych Dotychczas w celu uzyskania

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa

Bardziej szczegółowo

Enterprise JavaBean 3.0

Enterprise JavaBean 3.0 Enterprise JavaBean 3.0 Michał Szymczak, Grzegorz Dziemidowicz Politechnika Wrocławska Inżynieria Oprogramowania 26 maja 2009 Ogólne spojrzenie na EJB EJB jako komponent EJB jako framework Typy beanów

Bardziej szczegółowo

Java wybrane technologie

Java wybrane technologie Java wybrane technologie spotkanie nr 7 Enterprise Java Beans Zagadnienia dotyczące systemów rozproszonych Zdalne wołanie metod (ang. Remote Method Invocation) Wielowątkowość (ang. Threading) Współpraca

Bardziej szczegółowo

Wykład 1 Inżynieria Oprogramowania

Wykład 1 Inżynieria Oprogramowania Wykład 1 Inżynieria Oprogramowania Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowaniaiteracyjno-rozwojowy cykl oprogramowania Autor: Zofia Kruczkiewicz System Informacyjny =Techniczny SI

Bardziej szczegółowo

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1 Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1 Przykład 1- Wykonanie prostej aplikacji internetowej w technologii JavaEE w środowisku Netbeans 5.5 z wykorzystaniem

Bardziej szczegółowo

Komponenty sterowane komunikatami

Komponenty sterowane komunikatami Komponenty sterowane komunikatami 1. Usługa JMS asynchroniczność, model przesyłania komunikatów, 2. Przykład wysyłanie wiadomości, odbieranie wiadomości, komponent sterowany komunikatami 3. Komponenty

Bardziej szczegółowo

JDBC (Java Database Connectivity vit )

JDBC (Java Database Connectivity vit ) 1 JDBC (Java Database Connectivity) Marek Wojciechowski Czym jest JDBC? 2 JDBC jest standardowym interfejsem do współpracy aplikacji Java z relacyjną bazą danych JDBC definiuje standardowe interfejsy interfejsy

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko

Bardziej szczegółowo

Serwery Aplikacji "CC" Grzegorz Blinowski. Grzegorz.Blinowski@cc.com.pl http://www.cc.com.pl/ tel (22) 646-68-73; faks (22) 606-37-80

Serwery Aplikacji CC Grzegorz Blinowski. Grzegorz.Blinowski@cc.com.pl http://www.cc.com.pl/ tel (22) 646-68-73; faks (22) 606-37-80 Serwery Aplikacji Grzegorz Blinowski "CC" Grzegorz.Blinowski@cc.com.pl http://www.cc.com.pl/ tel (22) 646-68-73; faks (22) 606-37-80 Aplikacje Web Aplikacje Web - nowe wcielenie modelu klientserwer: przeglądarka

Bardziej szczegółowo

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie architektury systemu rozproszonego Jarosław Kuchta Zagadnienia Typy architektury systemu Rozproszone przetwarzanie obiektowe Problemy globalizacji Problemy ochrony Projektowanie architektury

Bardziej szczegółowo

Serwery Statefull i Stateless

Serwery Statefull i Stateless Serwery Statefull i Stateless Wszystkie serwery aplikacji są określone jako stateless podczas projektowania. Te aplikacje nie przetrzymują stałego połączenia z klientem. Wysyłają one pakiety danych na

Bardziej szczegółowo

Rola EJB na platformie Java EE. Enterprise JavaBeans (EJB)

Rola EJB na platformie Java EE. Enterprise JavaBeans (EJB) Wielowarstwowe aplikacje internetowe Plan wykładu Enterprise JavaBeans (EJB) Wprowadzenie do technologii EJB Typy komponentów EJB Klienci dla komponentów EJB Transakcje w EJB JavaServer Faces (JSF) Enterprise

Bardziej szczegółowo

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis, Nowy powiew od Słońca: EJB 3.0 Wstęp Agenda EJB podstawowe informacje Problemy EJB 1.X i 2.X Zmiany wprowadzone w EJB v. 3.0 uproszczone API nowe komponenty encyjne wzorce i antywzorce Przykład, czyli

Bardziej szczegółowo

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152 Wstęp...xv 1 Rozpoczynamy...1 Co to jest ASP.NET?...3 W jaki sposób ASP.NET pasuje do.net Framework...4 Co to jest.net Framework?...4 Czym są Active Server Pages (ASP)?...5 Ustawienia dla ASP.NET...7 Systemy

Bardziej szczegółowo