Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN.
|
|
- Klaudia Tomczyk
- 8 lat temu
- Przeglądów:
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 07.11.2002 Co powinieneś znać? Podstawy HTML i XML Programowanie obiektowe w Javie Serwery
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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ć
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
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
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
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
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),
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
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,
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
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
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.
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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