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



Podobne dokumenty
Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

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

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Enterprise JavaBeans

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

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

Serwery LDAP w środowisku produktów w Oracle

Wprowadzenie do Enterprise JavaBeans 2.0

1 Wprowadzenie do J2EE

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

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

Wybrane działy Informatyki Stosowanej

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

EJB 3.0 (Enterprise JavaBeans 3.0)

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

Aplikacje RMI

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.

Programowanie komponentowe 5

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

Wybrane działy Informatyki Stosowanej

Podejście obiektowe do budowy systemów rozproszonych

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

Aplikacje RMI Lab4

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada 2010

Budowa komponentów Enterprise JavaBeans

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

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

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

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

Enterprise Java Beans wykład 7 i 8

Wprowadzenie do J2EE. Maciej Zakrzewicz.

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

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Usługa TimerService

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

Aplikacje internetowe i rozproszone - laboratorium

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Aplikacje Internetowe, Servlety, JSP i JDBC

Enterprise JavaBeans (EJB)

Java wybrane technologie

Podstawowe informacje o technologii Java EE 7

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

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

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

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

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

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

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

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

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

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

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

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.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Zagadnienia projektowania aplikacji J2EE

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

Dostęp do baz danych z aplikacji J2EE

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Programowanie obiektowe

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

J2EE Project TEMATY PROJEKTÓW PRZEMYSŁAW SOŁTAN. (0.2 build )

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

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

Serwery Aplikacji "CC" Grzegorz Blinowski. tel (22) ; faks (22)

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML

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

SOP System Obsługi Parkingów

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Wstęp... ix. 1 Omówienie systemu Microsoft Windows Small Business Server

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

Komponenty sterowane komunikatami

Systemy Rozproszone - Ćwiczenie 6

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

edziennik Ustaw Opis architektury

Programowanie współbieżne i rozproszone

JAX-RS czyli REST w Javie. Adam Kędziora

Wykład 1 Inżynieria Oprogramowania

Java Server Faces narzędzie do implementacji w wy prezentacji

EXSO-CORE - specyfikacja

Wzorce logiki dziedziny

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

Wprowadzenie do sieciowych systemów operacyjnych. Moduł 1

Enterprise JavaBeans (EJB)

Wybrane działy Informatyki Stosowanej

Zastosowanie komponentów EJB typu Session

Sieciowa instalacja Sekafi 3 SQL

Usługi katalogowe i protokół LDAP

Stanowe komponenty sesyjne

Enterprise Java Beans Narzędzia i Aplikacje Java EE

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

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

Transkrypt:

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 aplikacji (JSP i Servlety) Obsługa baz danych (SQL) 2

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 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)

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 Sun Microsystems - www.java.sun.com 5

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 N-Tier Przeglądarka internetowa Serwer webowy Serwer aplikacji Dane Warstwa prezentacji Warstwa logiki biznesowej Warstwa danych

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

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

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

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

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

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

EJB 15

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

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

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 EJB EJB architektura do dystrybucji komponentów transakcyjnych po stronie serwera Zdefiniowanie standardowych interfejsów i ich implementacja w serwerach aplikacji (kontenerach EJB)

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

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

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

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

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

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

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 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 Witaj EJB Diagram klas komponentu WitajBean (Power Desinger - Sybase) interfejs klasa

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

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

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

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

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

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

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

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

Klient EJB Interfejs domowy HOME 3 4 EJBHome Kontener EJB 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

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

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

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

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

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

Klient(Przeglądarka) 45 Klient Serwer Serwer(Kontener WEB) Serwer(Kontener EJB) 3 2 4 1 Przeglądarka HTML Kontener WEB JSP Kontener EJB EJB

Serwer J2EE 46

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 http://localhost:8000 zatrzymanie serwera c:\java\j2ee\bin\j2ee -stop

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

http://localhost:8000 49

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

51 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)

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

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 53

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

55 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

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

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

58 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

59 Archiwum webowe WAR Nowe archiwum WAR Plik witaj.jsp

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

Referencja do komponentu EJB 61

Deployment 62

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

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 64

Wzorcowa aplikacja J2EE http://localhost:8000/petstore 65

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

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) 67

Platforma Eclipse 68

Session Bean 69

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 70

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) 71

72 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)

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 73

74 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)

75 Session Stateless Bean

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

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

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 78

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 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 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 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 ejbobject.remove() or home.remove(...) Obsługa metody remove ejbremove() Usunięcie instancji komponentu bean z puli komponentów 81

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

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

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

85 Session Stateful Bean

86 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)

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

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

89 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)

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

91 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

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 ejbpasivate() Serializacja instancji komponentu i utrwalenie w magazynie Uśpienie instancji komponentu

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 93

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 94

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 95

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 96

97 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)

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) 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)

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 99

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

DeployTool 101

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

Interfejsy lokalne (LocalHome i LocalObject) 103

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 104

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 105

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

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; 107

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; 108

109 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

Deploytool 110

111 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

112 Klasa adaptacyjna

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

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

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 115

Entity Beans 116

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 117

118 Rodzaje komponentów EJB klient klient Entity Bean Komponent typu Entity (obiekt biznesowy reprezentujący przechowywanie danych) klient Komponenty Entity Bean charakteryzują się: - 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)

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 119

120 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

ANT 121

122 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 JDK itd...

Skrtypt build.xml 123

124 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

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

JNLP 126

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

JNLP - przykład <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="http://localhost:8080/jnlp/" href="baner.jnlp"> <information> <title>systemy Rozproszone - BANER</title> <vendor>technical University of Koszalin</vendor> <homepage href="http://kik.ie.tu.koszalin.pl/systemy"/> <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: http://localhost:8080/jnlp/baner.jnlp http://localhost:8080/jnlp/baner.jar 128

JNLP - przykład <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="http://localhost:8080/jnlp/" href="baner.jnlp"> <information> <title>systemy Rozproszone - BANER</title> <vendor>technical University of Koszalin</vendor> <homepage href="http://kik.ie.tu.koszalin.pl/systemy"/> <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> 129