Programowanie komponentowe 5

Podobne dokumenty
Zastosowanie komponentów EJB typu Session

Podstawowe informacje o technologii Java EE 7

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.

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

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

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

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

Tworzenie warstwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP

Aplikacje RMI Lab4

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

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

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Zastosowanie słuchaczy zdarzeń wg

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Projekt INP Instrukcja 1. Autor Dr inż. Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Stanowe komponenty sesyjne

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń, zastosowanie walidatorów, wykonanie listy typu Drop Down List.

Podstawowe informacje o technologii Java Persistence API - przykład

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

Kontynuacja programu z lab3 zaawansowane renderowanie formularzy JSF

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Podstawowe informacje o technologii Java Persistence API - przykład

Wybrane aspekty projektowania - budowa wielowarstwowego modelu implementacji, zastosowanie wzorców projektowych Wykład 7 część 2

Enterprise JavaBeans (EJB)

Aplikacje internetowe i rozproszone - laboratorium

Tworzenie warstwy prezentacji drugi etap Przykład z laboratorium5_6. Autor Zofia Kruczkiewicz Wzorce oprogramowania laboratorium7_8

Budowa prostej aplikacji wielowarstwowej

Java Server Faces narzędzie do implementacji w wy prezentacji

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Budowa aplikacji wielowarstwowych. Zastosowanie konwerterów oraz plików typu properties.

Modelowanie i analiza. warstwy biznesowej aplikacji

Enterprise JavaBeans

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

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Zaawansowane aplikacje internetowe

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

Java EE: JSF + EJB + JPA + CDI + BV

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Kontynuacja programu z lab2 refaktoryzacja kodu oparta na dodaniu obiektu transferowego oraz stronicowania tabeli w formularzu JSF

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Aplikacje RMI

Języki i metody programowania Java. Wykład 2 (część 2)

Wywoływanie metod zdalnych

Projekt INP Instrukcja 2. Autor Dr inż. Zofia Kruczkiewicz

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wywoływanie metod zdalnych

Bezstanowe komponenty sesyjne i zdarzenia zwrotne


Java EE: JSF + EJB + JPA

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

Usługa TimerService

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie Wykład 2 Technologie internetowe

1 Wprowadzenie do J2EE

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

Programowanie wielowarstwowe i komponentowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Wybrane działy Informatyki Stosowanej

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Enterprise JavaBean 3.0

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Budowa aplikacji wielowarstwowych, zastosowanie obiektów transferowych, konwerterów i walidatorów

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

Remote Method Invocation 17 listopada 2010

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ć

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

1 Atrybuty i metody klasowe

EJB 3.0 (Enterprise JavaBeans 3.0)

Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006

Enterprise JavaBeans (EJB)

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

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

Wielowarstwowa aplikacja internetowa. Wykonanie widoku typu tabela. Pliki typu properties. wg

Wybrane działy Informatyki Stosowanej

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

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

Programowanie obiektowe zastosowanie języka Java SE

Wzorce logiki dziedziny

Budowa aplikacji wielowarstwowych. zastosowanie walidatorów.

Zastosowanie technologii Ajax w ramach technologii JavaServer Faces wg

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

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Języki i metody programowania Java Lab2 podejście obiektowe

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

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

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0

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

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Transkrypt:

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 Programowanie komponentowe 5 Programowanie komponentowe 5, 1

1. Aplikacja wielowarstwowa Java EE oparta na komponencie EJB typu Session Bean rodzaj Stateless lub Singleton 1.1. Warstwa internetowa oparta na komponencie Managed Bean o czasie życia RequestScope 1.2. Warstwa internetowa oparta na komponencie Managed Bean o czasie życia SessionScope Programowanie komponentowe 5, 2

Ad. 1.1. Architektura aplikacji pięciowarstwowej -Java EE 7.0 JavaServer Faces Baza danych katalog Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Technologia Transfer Object EclipseLink fasady (XXXController) fabryki obiektów Warstwa zasobów Warstwa integracji Komponent EJB ApplicationBean1 Wzorzec fasady usług Obiektowy model danych: Produkt1 Kontroler: Fasada_warstwy_biznesowej Warstwa biznesowa Warstwa biznesowa SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji Warstwa prezentacji Strony JSF Strony JSF Strony JSF Warstwa prezentacji Przeglądarka Klient1 - Przeglądarka Klient2 - Przeglądarka Klient3 - klient klient klient Warstwa klienta

Cykl życia bezstanowych (Stateless) komponentów typu Session Bean wykład 2 Ponieważ bezstanowy komponent typu Session Bean nigdy nie przechodzi w stan pasywny, cykl życia składa sie tylko z dwóch stanów: nonexistent and ready podczas wywoływania metod przez warstwę klienta. Programowanie komponentowe 5, 4

Cykl życia komponentów Singleton typu Session Bean Ponieważ bezstanowy komponent typu Session Bean nigdy nie przechodzi w stan pasywny, cykl życia składa sie tylko z dwóch stanów: nonexistent and ready podczas wywoływania metod przez warstwę klienta. Singleton startuje razem z aplikacją, jeśli ma adnotację @StartUp i inicjuje aplikację za pomocą metody @PostConstruct (jeśli jest) i czyści za pomocą metody @PreDestroy (jeśli jest). Programowanie komponentowe 5, 5

Standard cyklu życia Request-Response dla JavaServer Faces RequestScoped: podczas odebrania żądania tworzony jest nowy komponent typu Managed_produkt wszystkie jego dane są zaktualizowane podczas fazy Invoke Application. Po zakończeniu fazy Render Response komponent jest usuwany.

Uruchomienie aplikacji opartej na komponencie EJB typu Session, rodzaj Stateless - Clean and Build/Deploy/Run Uruchomienie 1-ej instancji warstwy klienta aplikacji i wprowadzenie danych produktu może być uruchomiona automatycznie w przeglądarce domyślnej. Programowanie komponentowe 5, 7

Uruchomienie 2-ej instancji warstwy klienta aplikacji aplikacji i wprowadzenie danych kolejnego produktu (przez wprowdzenie adresu: http://localhost:8080/sklep_6_1) Programowanie komponentowe 5, 8

Po uruchomieniu formularza Lista produktow w obu instancjach klientów aplikacji widać, że korzystają z tej samej instancji komponentu typu Fasada_warstwy_biznesowej_ejb, czyli tej samej instancji obiektu Fasada_warstwy_biznesowej. 9

Uruchomienie aplikacji opartej na komponencie EJB typu Session, rodzaj Stateless - Clean and Build/Deploy/Run Uruchomienie 1-ej instancji warstwy klienta aplikacji i wprowadzenie danych produktu może być uruchomiona automatycznie w przeglądarce domyślnej. Programowanie komponentowe 5, 10

Uruchomienie 2-ej instancji warstwy klienta aplikacji aplikacji i wprowadzenie danych kolejnego produktu (prze wprowdzenie adresu: http://localhost:8080/sklep_6_1) Programowanie komponentowe 5, 11

Po uruchomieniu formularza Lista produktow w obu instancjach klientów aplikacji widać, że korzystają z tej samej instancji komponentu typu Fasada_warstwy_biznesowej_ejb, czyli tej samej instancji obiektu Fasada_warstwy_biznesowej. 12

Ad. 1.2. Architektura aplikacji pięciowarstwowej -Java EE 7.0 JavaServer Faces Baza danych katalog Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Technologia Transfer Object EclipseLink fasady (XXXController) fabryki obiektów Warstwa zasobów Warstwa integracji Komponent EJB ApplicationBean1 Wzorzec fasady usług Obiektowy model danych: Produkt1 Kontroler: Fasada_warstwy_biznesowej Warstwa biznesowa Warstwa biznesowa SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji Warstwa prezentacji Strony JSF Strony JSF Strony JSF Warstwa prezentacji Przeglądarka Klient1 - Przeglądarka Klient2 - Przeglądarka Klient3 - klient klient klient Warstwa klienta

Standard cyklu życia Request-Response dla JavaServer Faces SessionScoped: podczas uruchomienia instancji aplikacji klienta tworzony jest nowy komponent typu Managed_produkt wszystkie jego dane są zaktualizowane podczas fazy Invoke Application. Po zakończeniu fazy Render Response komponent pozostaje w pamięci. Jeśli nie wystapią błędy, jedynie po zakończeniu sesji lub zamknięciu aplikacji klienta komponent Managed_produkt jest usuwany z pamięci

Tworzenie modelu komponentu datatable w komponencie typu Managed_produkt na stronie lista_produktow.xhtml public DataModel utworz_datamodel() { return new ListDataModel(fasada.items()); } public DataModel getitems() { if (items == null stan==1) { items = utworz_datamodel(); } return items; } Przy czasie życia SessionScope obiektu typu Managed_produkt atrybut items jest równy null tylko podczas obsługi pierwszego żądania. Badanie zmiennej stan pozwala na aktualizaję modelu items: stan==1 oznacza, że dodano nowe dane w danej instancji aplikacji internetowej. Model elemetów strony rezultat2.xhtml jest tworzony zawsze albo pokazane są dane nowego produktu lub pojawia się napis o braku wstawienia nowego produktu (zmienna stan=0) 15

Uruchomienie aplikacji opartej na komponencie EJB typu Session, rodzaj Stateless - Clean and Build/Deploy/Run Uruchomienie 1-ej instancji warstwy klienta aplikacji i wprowadzenie danych produktu może być uruchomiona automatycznie w przeglądarce domyślnej. Programowanie komponentowe 5, 16

Uruchomienie 2-ej instancji warstwy klienta aplikacji aplikacji i wprowadzenie danych kolejnego produktu (przez wprowdzenie adresu: http://localhost:8080/sklep_6_1) Programowanie komponentowe 5, 17

Po uruchomieniu formularza Lista produktow w obu instancjach klientów aplikacji widać, że korzystają z tej samej instancji komponentu typu Fasada_warstwy_biznesowej_ejb, czyli tej samej instancji obiektu Fasada_warstwy_biznesowej. 18

Uruchomienie aplikacji opartej na komponencie EJB typu Session, rodzaj Stateless - Clean and Build/Deploy/Run Uruchomienie 1-ej instancji warstwy klienta aplikacji i wprowadzenie danych produktu może być uruchomiona automatycznie w przeglądarce domyślnej. Programowanie komponentowe 5, 19

Uruchomienie 2-ej instancji warstwy klienta aplikacji aplikacji i wprowadzenie danych kolejnego produktu (przez wprowdzenie adresu: http://localhost:8080/sklep_6_1) Programowanie komponentowe 5, 20

Po uruchomieniu formularza Lista produktow w obu instancjach klientów aplikacji widać, że korzystają z tej samej instancji komponentu typu Fasada_warstwy_biznesowej_ejb, czyli tej samej instancji obiektu Fasada_warstwy_biznesowej. 21

2. Aplikacja wielowarstwowa Java EE oparta na komponencie EJB typu Session Bean rodzaj Stateful Warstwa internetowa oparta na komponencie Managed Bean o czasie życia SessionScope Programowanie komponentowe 5, 22

Architektura aplikacji pięciowarstwowej Java EE 7.0 JavaServer Faces Baza danych Warstwa zasobów katalog Warstwa integrująca (EntityManager, ) Technologia EclipseLink TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integrująca (EntityManager, ) Technologia EclipseLink TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integrująca (EntityManager, ) Technologia EclipseLink TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integracji Obiektowy model danych:produkt1 Kontroler: Fasada_warstwy_ biznesowej Komponent EJB Obiektowy model danych:produkt1 Kontroler: Fasada_warstwy_ biznesowej Komponent EJB Obiektowy model danych: Produkt1 Kontroler: Fasada_warstwy_ biznesowej Komponent EJB Warstwa biznesowa ApplicationBean1 Wzorzec fasady usług SessionBean1 Komponent (1) Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent (2) Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec (3) typu ManagedBean fasady sesji (1) Strony JSF (2) Strony JSF (3) Strony JSF Warstwa prezentacji Przeglądarka Klient1 - Przeglądarka Klient2 - Przeglądarka Klient3 - (1) klient (2) klient (3) klient Warstwa klienta

Standard cyklu życia Request-Response dla JavaServer Faces SessionScoped: podczas uruchomienia instancji aplikacji klienta tworzony jest nowy komponent typu Managed_produkt wszystkie jego dane są zaktualizowane podczas fazy Invoke Application. Po zakończeniu fazy Render Response komponent pozostaje w pamięci. Jeśli nie wystapią błędy, jedynie po zakończeniu sesji lub zamknięciu aplikacji klienta komponent Managed_produkt jest usuwany z pamięci

Cykl życia stanowych (Stateful) komponentów typu Session Bean Zadania kontenera EJB: 1. Tworzy komponent 2. Dependency injection, jeśli są 3. Metoda PostConstruct callback, jeśli jest 4. Metoda Init, lub ejbcreate<method>, jeśli są 1. Usuwa komponent 2. Metoda PreDestroy callback, jeśli jest 25

Tworzenie modelu komponentu datatable w kompoenencie typu Managed_produkt na stronie lista_produktow.xhtml podobnie jak w p.1.2 public DataModel utworz_datamodel() { return new ListDataModel(fasada.items()); } public DataModel getitems() { if (items == null stan==1) { items = utworz_datamodel(); stan=0; } return items; } Przy czasie życia SessionScope obiektu typu Managed_produkt items jest równy null tylko podczas obsługi pierwszego żądania pierwszego. Badanie zmiennej stan pozwala na właściwą aktualizaję modelu items: stan==1 oznacza, że dodano nowe dane w danej instancji klienta internetowego Model elemetów strony rezultat2.xhtml jest tworzony zawsze albo pokazane są dane nowego produktu lub pojawia się napis o braku wstawienia nowego produktu (zmienna stan=0) 26

Uruchomienie aplikacji opartej na komponencie EJB typu Session, rodzaj Stateful - Clean and Build/Deploy/Run Uruchomienie 1-ej instancji warstwy klienta aplikacji i wprowadzenie danych produktu Programowanie komponentowe 5, 27

Uruchomienie 2-ej instancji warstwy klienta aplikacji i wprowadzenie danych produktu (podobnie jak w p.1.16: http://localhost:8080/sklep_6_2) Programowanie komponentowe 5, 28

Po uruchomieniu formularza Lista produktow w obu instancjach klientów aplikacji widać, że korzystają z różnych instancji komponentu typu Fasada_warstwy_biznesowej_ejb, czyli różnych instancji obiektu Fasada_warstwy_biznesowej. Programowanie komponentowe 5, 29

Po upływie 2 min próba wywołania strony Lista produktów za pomocą linku Lista produktów daje rezulat Brak danych, ponieważ każdy z komponentów typu Stateful przeszedł w stan nieaktywny po upływie 2 min i nastąpiła utrata danych. 30

3. Wykonanie aplikacji wielowarstwowej na platformie Java EE z warstwą klienta zawierającą klienta internetowego i desktopowego Programowanie komponentowe 5, 31

Komunikacja między warstwą klienta i serwerem aplikacji Klient desktopowy Klient internetowy 32

Komponenty poszczególnych warstw aplikacji EE Programowanie komponentowe 5, Enterprise Information Systems 33

Architektura aplikacji pięciowarstwowej -Java EE 7.0 JavaServer Faces Baza danych katalog Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Technologia Transfer Object EclipseLink fasady (XXXController) fabryki obiektów Warstwa zasobów Warstwa integracji Komponent EJB ApplicationBean1 Wzorzec fasady usług Obiektowy model danych: Produkt1 Kontroler: Fasada_warstwy_biznesowej Warstwa biznesowa Warstwa biznesowa SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji Warstwa prezentacji Strony JSF Strony JSF Strony JSF Warstwa prezentacji (1) Przeglądarka Klient1 - (2) Przeglądarka Klient2 - (3) Przeglądarka Klient3 - klient klient klient Warstwa klienta (1) Klient desktopowy (2) Klient desktopowy

3.1. Wykonanie projektu typu Enterprise Application 35

36

Programowanie komponentowe 5, 37

3.2. Wykonanie projektu Java SE typu Java Class Library (SklepPK_interfejs) w celu zdefiniowania w nim w kolejnych krokach interfejsu komponentu EJB. Programowanie komponentowe 5, 38

3.3. Definicja komponentu EJB typu Session w module typu EJB (wybranie pozycji New/Other) 39

Programowanie komponentowe 5, 40

3.4. Dodanie projektu SE z logiką biznesową do modułu EJB 41

3.5. Zdefiniowanie w komponencie EJB typu Session Bean (Fasada_warstwy_biznesowej_ejb) kodu zdalnego dostęu do logiki biznesowej Programowanie komponentowe 5, 42

Fasada_warstwy_biznesowej_ejb - kod package warstwa_biznesowa; import java.util.arraylist; import java.util.date; import javax.ejb.stateless; import warstwa_biznesowa.fasada_warstwy_biznesowej; @Stateless public class Fasada_warstwy_biznesowej_ejb implements Fasada_warstwy_biznesowej_ejbRemote { Fasada_warstwy_biznesowej fasada=new Fasada_warstwy_biznesowej(); public void utworz_produkt(string dane[], Date data) { } fasada.utworz_produkt(dane, data); public String[] dane_produktu() { return fasada.dane_produktu(); } } public ArrayList<ArrayList<String>> items() { return fasada.items(); } 43

Kod interfejsu dla zdalnego komponentu typu EJB 44

Fasada_warstwy_biznesowej_ejbRemote kod interfejsu package warstwa_biznesowa_ejb; import java.util.arraylist; import java.util.date; import javax.ejb.remote; @Remote public interface Fasada_warstwy_biznesowej_ejbRemote { public void utworz_produkt(string dane[], Date data); public String[] dane_produktu(); public ArrayList<ArrayList<String>> items(); } Programowanie komponentowe 5, 45

3.6. Dodanie do projektu EE warstwy klienta internetowego kopia istniejącej aplikacji Java Web Application Programowanie komponentowe 5, 46

3.6.1. W projecie typu Java Web typu Web Application bezpiecznie pakiet warstwa_biznesowa teraz komponent EJB jest zdefiniowany w module EJB 47

3.6.2. W komponencie typu Managed Bean o nazwie Managed_produkt należy usunąć z kodu dotychczasowe powiązanie z komponentem EJB. Programowanie komponentowe 5, 48

3.6.3. Należy teraz wstawić powiązanie z nowym komponentem typu EJB. W tym celu kliknąć prawym klawiszem myszy na kod klasy i wybrać pozycję Insert Code... Programowanie komponentowe 5, 49

3.6.3.cd. Należy wybrać pozycję Call Enterprise Bean.. i w kolejnym formularzu należy wybrać w projekcie EJB SklepPK_Lab2_EE-ejb komponent EJB typu Session: Fasada_warstwy_biznesowej_ejbRem ote i nadać mu nazwę fasada. 50

3.6.4. Wynik zmian w celu usunięcia błędów należy zmodyfikować metody dostępu do dodanego komponentu:fasada_warstwy_biznesowej_ejbremote Programowanie komponentowe 5, 51

3.7. Dodanie warstwy klienta desktopowego Java EE typu Enterprise Application Client. Pierwszym etapem jest utworzenie projektu na platformie Java SE (http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/lab6_2016.pdf). Logika biznesowa dla projektu Sklep_GuiPK_lab2_SE stanowiącego warstwę klienta w dwuwarstwowej aplikacji Java SE jest projekt Sklep_6SE z kodem logiki biznesowej (p.3.4 - połączonej podobnie jak z modułem EJB) Programowanie komponentowe 5, 52

3.7.1. Wykonanie i uruchomienie projektu Java SE o architekturze dwuwarstwowej. Takie podejście ułatwia wdrożenie deskotopowego klienta aplikacji EE. Programowanie komponentowe 5, 53

3.7.2. Drugi etap dodania warstwy klienta desktopowego Java EE typu Enterprise Application Client. Programowanie komponentowe 5, 54

Programowanie komponentowe 5, 55

3.7.3. Usunięcie pliku GUI_main 56

3.7.4. Skopiowanie plików z formularzami z projektu klienta SE: Sklep_GuiPK_lab2_SE. 57

3.7.5. Należy w pliku GUI_main dodać połączenie z komponentem EJB typu Session: Fasada_warstwy_biznesowej_ejb, umieszczonym w module EJB 58

59

3.8. Uruchomienie projektu. Należy w podanej kolejności wykonać operacje Clean and Build na projektach składowych (w celu łatwiejszej lokalizacji błędów): 1) Sklep_6SE 2) SklepPK_Lab2_EE-ejb 3) SklepPK_Lab2_Web 4) Sklep_GUIPK_lab2_EE_Desktop 5) SklepPK_Lab2_EE Następnie, należy wykonać operację Deploy na projekcie SklepPK_Lab2_EE. Teraz można uruchomić dowolną liczbę aplikacji klienckich za pomocą operacji Run: 1) SklepPK_Lab2_Web 2) Sklep_GUIPK_lab2_EE_Desktop W przykładzie uruchomiono dwie instancje aplikacji desktopowej i jedną internetową. 60

3.8.1. Proces wprowadzania danych w uruchomionych aplikacjach klienckich 61

3.8.2. Każda z aplikacji klienckich korzysta z danych umieszczonych w tym samym komponencie EJB typu Session rodzaj Stateless. Programowanie komponentowe 5, 62