Java 1 - Kolos
Transkrypt
Java 1 - Kolos
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 Komponenty Kontenery Typy Fasolek Role Wołanie metod EJB Deskryptor i rozmieszczanie Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Co to jest EJB? EJB – Enterprise JavaBeans EJB opisane w specyfikacji J2EE Jest to architektura komponentowa ułatwiające rozwój i rozmieszanie aplikacji biznesowych rozproszonych Aplikacje napisane z wykorzystaniem EJB są skalowalne, rozproszone, wspierają transakcje oraz zapewniają bezpieczeństwo w środowisku wielu użytkowników Koncepcja: wirte once, run anywhere Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Podstawowe zasady projektowania aplikacji używających EJB Aplikacje są luźno powiązane Zachowanie specyfikowane jest po przez interfejsy Aplikacje nie zarządzają zasobami Kontener dostarcza pomocnicze mechanizmy dla programisty Aplikacje są wielowarstwowe Warstwa Session: API do aplikacji Warstwa Entity: API do danych Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 EJB – loosely coupled Z założeń specyfikacji: możliwość integracji EJB od rożnych dostawców Nie trzeba ingerować w kod EJB. Dostęp do usług i innych komponentów za pomocą nazw. Zalety swobodnego powiązania: system łatwiej utrzymywać, testować i rozbudowywać (ponowne wykorzystanie komponentów) Dwie zasadnicze role: Application assembler: osoba składająca aplikację z komponentów. Zadaniem jest rozwiązanie problemu nazw, prawidłowej propagacji transakcji, etc …Brak konieczności ingerencji w kod aplikacji, jedynie XML Component provider Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Specyfikacja zachowania EJB Zachowanie widoczne dla klienta EJB określone za pomocą interfejsu Interfejs to: zestaw metod, które może wykonać klient Zamknięcie implementacji z punktu widzenia klienta Wsparcie dla przenośności i skalowalności oraz możliwości integracji z innymi aplikacjami niż Java (specyfikacja za pomocą IDL – CORBA) Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 EJB i źródła danych EJB nie zajmuje się zarządzaniem źródłem danych. Realizowane to jest przez warstwę pośredniczącą. Dostęp do danych zapewnia kontener. Kontener może implementować różnego rodzaju mechanizmy w celu optymalizacji (pooling) Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Mechanizmy kontenera Kontener oferuje szereg mechanizmów wspierających programistę m.in: Bezpieczeństwo Transakcje Zarządzanie połączeniami (connecting pool) Zarządzanie cyklem życia komponentu Wielowątkowość Persistence Programista opisuje swojego wymagania w sposób deklaratywny – nie w kodzie Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Umieszczenie EJB w architekturze J2EE Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 EJB w architekturze J2EE web-tier EJB Client Standalone EJB Client Źródło: http://java.sun.com Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Dlaczego EJB? Zalety modelu komponentowego po stronie serwera (ponowne wykorzystanie, dostępność komponentów innych dostawców, dostępność narzędzie, etc…) Oddzielenie logiki biznesowej od systemu (kontener) Dostarczenie gotowych mechanizmów: persistence, transakcyjność, zarządzanie zasobami Środowisko dla przenośnych komponentów (standard przemysłowy oraz zastosowanie języka Java) Konfiguracja w momencie rozmieszczania aplikacji za pomocą deskryptora bez ingerencji w kodzie Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 EJB Wykorzystywany wyłączenie do implementacji logiki biznesowej Brak konieczności troszczenia się o zagadnienia niskopoziomowe Możliwość wielokrotnego wykorzystania na różnych platformach Implementuje interfejsy, za pomocą których kontener może zarządzać EJB Konieczność specyfikacji dwóch rodzajów interfejsów: Lokalny Zdalny Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kiedy EJB, kiedy wyłącznie strona Warstwa EJB pozwala wykorzystać funkcjonalność oferowaną przez kontener: zarządzanie zasobami, zarządzanie cyklem życia, sterowanie wielowątkowością, wielowątkowość presistence, transakcje i bezpieczeństwo komunikacja asynchroniczna – wiadomości Skalowalność, niezawodność … Problemy, które mogą pojawić się w przypadku rozbudowy aplikacji niekorzystającej z EJB Jeśli korzystamy włącznie z prostych operacji na tabelach, wówczas warto się zastanowić na aplikacją napisaną bez EJB Jeśli wiemy, że komponenty biznesowe będą nam potrzebne wówczas warto wykorzystać EJB Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Źródło: http://www.javaworld.com/javaworld/jw-12-2001/images/jw-1207-yesnoejbf2.jpg Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Pytania contra EJB Zbyt ciężka technologia Złożony model programistyczny Problematyczne testowanie aplikacji Przydatne wyłącznie przy dużych rozproszonych architekturach EJB3.0 uwzględnia powyższe aspekty Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Architektura EJB EJB Object Kontener Serwer EJB Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Baza danych lub komponent Klient Komponent EJB EJB Home Tworzenie EJB Implementacja: Stworzenie EJB Kontener stworzy 2 obiekty: Interfejsu lokalnego – do zarządzania cyklem życia aplikacji, tworzenie i lokalizacja EJB Interfejsu zdalnego – metody biznesowe dostępne dla innych komponentów Lokalny Zdalny Klient komunikuje się za pomocą pośrednich obiektów, w celu przechwytywania wszelkich wywołań Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Architektura kontraktów w EJB Kontrakty są określone w specyfikacji EJB Klient EJB oczekuje ściśle określonego zbioru zachowań od EJB Dwa rodzaje kontraktów: Client view contract: kontrakt pomiędzy klientem i kontnerem Component contract: kontrakt pomiędzy EJB i jego kontenerem Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Client view Contract Klientem EJB może być dowolny obiekt, który woła metody EJB np.: Komponenty warstwy WEB: Serwlet i JSP Aplikacje stand alone Aplety Inny EJB lub inny kontener np. session bean odbiera żądania i przekazuje je do entity beans, który sięga po dane Klient WS Specyfikacja EJB 2.1 określa również sposób prezentacji WS Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Client view contract (2) Budowa CVC lokalny (home interface) – zawiera zestaw metod do tworzenia i lokalizacji fasolki Interfejs zdalny (logic/remote interface) – zawiera metody biznesowe Identyfikacja obiektu – identyfikuje konkretną instancję fasolki Interfejs dla metadanych Handler Interfejs Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontrakt komponentu Określa co powinien kontener robić dla komponentu np. Umożliwia wołanie metod EJB przez klienta (kontener przechwytuje połączenie i przekazuje do konkretnego bean’a) Zarządza cyklem życia EJB. Programista nie zajmuje się tworzeniem fasolki, zarządza pulą i zgodnie z potrzebami zasobów może zniszczyć instancję Interfejs lokalny i zdalny implementowane są przez obiekty zdalny i lokalny Zapewnienie trwałości dla CMP entity beans Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontrakty EJB Kontrakt dla klienta klient Instancja EJB Client view contract Kontrakt Komponentu Kontener EJB Serwer EJB Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Architektura EJB EJB jest to komponent programistyczny na którym mogą być wołane metody i który może wołać metody na innych obiektach Wołanie metod może być realizowane lokalnie lub zdalnie w sieci (podobieństwo do RMI, CORBA) Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Podstawy EJB Zachowanie/metody widziane przez klienta są zdefiniowane w interfejsach EJB znajdują się i są wspierane przez kontener Kontener EJB tworzy wirtualne środowisko dla wykonywania pojedynczego wątku Kontener EJB zarządza transakcjami bazodanowymi Kontener EJB zarządza dostępem i bezpieczeństwem Zestandaryzowany sposób kreacji i lokalizacji EJB Możliwość tworzenia pul instancji w celu optymalizacji Kontener zarządza zasobami Zestandaryzowany sposób rozmieszczenia aplikacji Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Zachowanie EJB widziane przez klienta Klient może wołać jedynie metody eksponowane w postaci interfejsów przez EJB Interfejs zdalny – funkcje biznesowe wołane po zlokalizowanie EJB. Interfejs lokalny – fabryka EJB. Usuwanie, tworzenie i lokalizowanie EJB. Obiekty które korzystają z interfejsów EJB są klientami względem EJB Interfejsy są jedynie specyfikacją metod. Nie ma mowy o ich implmentacji. Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Izolowanie i środowisko kontenera Przechwytywanie wywołań przez kontener. Klient nie woła metod EJB bezpośrednio (nawet jeśli ten sam serwer lub JVM). Przechwytywanie wywołań pozwala na obsługę transakcji rozproszonych oraz tworzenie puli EJB Dostęp do kontenera i do EJB odbywa się przez obiekty pośredniczące (obiekty home & EJB). Kontener izoluje (enkapsuluje EJB) i zarządza bezpieczeństwem Generowanie obiektów pośredniczących na żądanie, automatycznie Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontener zapewnia wirtualne środowisko jednowątkowe Programista nie musi troszczyć się o zarządzanie problemami wielowątkowości oraz samym programowaniem wielowątkowym Kontener zapewnia, że EJB nie będzie wołane wielokrotnie Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontener zarządza transakcjami bazodanowymi Kontener obsługuje zarówno lokalne jak i zdalne transakcje Kontener wspiera deklaratywne transkacje Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontener zarządza bezpieczeństwem i dostępem Kontener obsługuje reguły dostępu: Które metody są dostępne dla jakich ról Sterowanie dostępem jest w sposób deklaratywny zawarte w deskryptorze Dozwolone jest programistyczne zarządzanie dostępem Kontener dostarcza mechanizmy autentykacji – programista EJB nie powinien tych mechanizmów implementować samodzielnie Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Tworzenie i lokalizacja EJB Specyfikacja EJB precyzyjnie określa w jaki sposób są tworzenie EJB i w jaki sposób usuwane Pobranie obiektu pośredniczącego (proxy) referencja na obiekt EJB Klient woła metody Create() lub find() w celu pobrania nowego obiektu Klient współpracuje z proxy nigdy bezpośrednio z EJB Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Zarządzanie instancjami przez kontener w celu zwiększenia efektywności Kontener może umieszczać instancje obiekty w pulach Kontener zwiększa efektywność zarządzania instancjami W momencie, gdy klient pyta kontener o EJB wówczas kontener zwraca referencje na instancję EJB znajdującego się w puli. Cała operacja jest przeźroczysta dla klienta. Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontener zarządza zewnętrznymi zasobami Przykłady zasobów którymi zarządza kontener: Bazy danych Systemy informacyjne Systemy wiadomości Zewnętrzne zasoby mogą być współdzielone z wykorzystaniem EJB Kontener zarządza połączeniami/dostępem do tych zasobów Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Standaryzacja rozmieszczania EJB EJB specyfikuje standard według którego rozmieszczane są EJB Pakowanie EJB Postać deskryptora Standard pozwala na uruchamianie aplikacji na dowolnym serwerze zgodnym ze specyfikacją EJB Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Kontener & Komponent Kontener obsługuje: Aspekty wielowątkowości – dostępność w tym samym czasie dla wielu klientów Bezpieczeństwo – konfiguracja funkcji bezpieczeństwa i dostępu w trakcie rozmieszania aplikacji Dostępność – przechowywanie sesji w pamięci zewnętrznej Skalowalność Trwałość danych Transakcje Cykl życia Zarządzanie Komponent realizuje: Logikę biznesową Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Funkcje kontenera EJB Generuje klasy dla interfejsów Wiąże nazwę z EJB za pomocą usługi JNDI. Klient wyszukuje obiekt po nazwie Tworzy zbiór obiektów do wykorzystania Zarządza pamięcią podręczną z EJB Zarządza zbiorem połączeń dla JDBC Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Terminy wykorzystywane przy EJB Klasa EJB (bean class) – klasa napisana w Javie reprezentująca fasolkę Instancja EJB – konkretna fasolka – obiekt Moduł EJB (EJB module) – jar z ejb lub zbiór klas EJB Aplikacja EJB – plik ear Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Terminy wykorzystywane przy EJB Interfejs lokalny (home interface) – interfejs javy zawierający metody do tworzenia, lokalizacji i niszczenia obiektu Lokalny obiekt EJB (EJB Home Object) – implementuje interfejs lokalny. Obiekt nazywany fabryką Interfejs zdalny (logic interface) – określa zachowanie EJB. Specyfikuje metody do logiki biznesowej Obiekt EJB (EJB Object) – implementuje interfejs zdalny. Implementowany jest automatycznie przez kontener. Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Typy EJB Session Beans EJB stanowe EJB bezstanowe Entity Beans Bean Managed Persistence Container Managed Persistence Message Driven Beans JMS JAXM Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Session Beans Jest to obiekt tymczasowy, którego czas istnienia jest uwarunkowany czasem komunikacji z klientem Klient tworzy EJB, wykonuje metody i później usuwa EJB. W przypadku, gdy klient nie usunie EJB kontener wykona to w operacji cyklicznej Session Beans bezstanowe (stateless) wykorzystywane są przez wielu klientów Session Beans stanowe (statefull) – tworzony dla konkretnego klienta i nie jest wykorzystywany przez żadnego innego Wykorzystanie: modelowanie procesu, zestawu zadań np. proces rezerwacji Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Stanowe i bezstanowe Session Beans Bezstanowe Session Beans – wykonuje żądanie i zwraca wynik bez zachowywania specyficznych dla klient informacji o stanie. Wykorzystywany w przypadku, gdy dany proces zamyka się w wywołaniu jednej metody Np.. Zestawienie katalogowe, pobranie informacji o walutach Stanowe Session Beans – utrzymuje informacje o stanie dla konkretnego klienta Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Entity Beans Udostępnia widok danych Jest „nieśmiertelny” niezależny od czasu poświęcanego na interakcję z klientem Żyje tak długo jak długo istnieją dane w bazie W większości przypadków synchronizowany z relacyjnymi bazami danych (stan przechowywany w bazie danych) Współdzielony przez wielu klientów Musi implementować interfejs: javax.ejb.EntityBean Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Entity Beans (scenariusz) Klient wyszukuje istniejący EJB Utworzenie wiąże się z dodaniem nowych danych do aplikacji - utworzeniem wiersza w tabeli Każdy Entity Beans posiada swój identyfikator, uzyskiwany poprzez przypisanie klucza do każdej instancji Przykłady EJB: EJB „klient” – dane klienta współdzielone przez inne obiekty, musi przetrwać awarię serwera, etc … Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Typy Entity Beans CMP (Container Managed Persistence) Zarządzanie trwałością przez kontener Wymaganie dot. trwałości specyfikowane są w deskryptorze Programista nie musi troszczyć się o mechanizmy zapewniające trwałość danych Zastosowanie: niezależność od bazy danych, wydajność, łatwy w tworzeniu BMP (Bean Managed Persistence) Programista dostarcza logikę zapewniającą trwałość Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 JavaBeans vs EJB JavaBeans Enterprise JavaBeans Przenośność w IDE Środowisko uruchomieniowe w ramach serwera aplikacyjnego Dostosowanie komponentów bazuje na introspekcji i IDE Środowisko uruchomieniowe jest modyfikowane metodą programowania deklaratywnego Zestaw interfejsów i zachowań komponentów do wizualnej manipulacji własnościami Zestaw interfejsów i zachowań komponentów dla wykonania kodu w ramach serwera aplikacyjnego Zdarzenia (publish-and-subscribe) typowo używane dla komunikacji między komponentami Zdalne interfejsy i zdalne wywoływanie metod typowym przykładem komunikacji między komponentami Komponenty są niezależne a ich kod wykonywany w ramach JVM Komponenty nie mogą istnieć poza odpowiednimi kontenerami dostarczanymi przez serwer aplikacyjny Źródło: OPA, Krystian Ignasiak Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008 Session vs. Entity Beans Komponent session Komponent entity Prywatne zasoby klienta Wielu klientów realizuje współbieżny dostęp Klient wpływa na stan komponentu Komponent reprezentuje stan danych Komponent nie jest trwały Komponent jest trwały Cyklem życia zarządza komponent Cykl życia odpowiada stanowi trwałemu (persistent) Zwykle tworzony w momencie żądania użycia Zwykle odnajdywany w momencie żądania użycia Zwykle jednowątkowy Jednowątkowy z definicji Źródło: OPA, Krystian Ignasiak Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008