EJB - Prezentacja TBE

Transkrypt

EJB - Prezentacja TBE
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
EJB
Prezentacja TBE
Jarosław Gołaszewski
Jakub Wojnicki
Politechnika Wrocławska
26.05.2009
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Agenda
1
Wstęp
2
EJB 3.0
3
Session Beans
4
Entity Beans
5
Message-Driven Beans
6
Serwery aplikacji
7
Podsumowanie
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Aplikacje rozproszone i komponenty
J2EE - definicja
J2EE - elementy
Aplikacje rozproszone i komponenty
Aplikacja dwuwarstwowa
Łatwa w instalacji ale trudna w utrzymaniu
Trudność w wielokrotnym wykorzystywaniu kodu
Słaba skalowalność
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Aplikacje rozproszone i komponenty
J2EE - definicja
J2EE - elementy
Aplikacje rozproszone i komponenty
Aplikacja dwuwarstwowa
Łatwa w instalacji ale trudna w utrzymaniu
Trudność w wielokrotnym wykorzystywaniu kodu
Słaba skalowalność
Aplikacja wielowarstwowa
Łatwa w instalacji i utrzymaniu
Wielokrotne wykorzystywanie kodu
Skalowalna
Skomplikowana obsługa transakcji, zarządzanie stanem,
wielowątkowość
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Aplikacje rozproszone i komponenty
J2EE - definicja
J2EE - elementy
J2EE
J2EE - definicja
Java Platform, Enterprise Edition (zwana również jako Java
Enterprise, J2EE oraz Java EE) definiuje standard tworzenia
aplikacji w języku programowania Java opartych o wielowarstwową
architekturę komponentową. Komponenty są zwykle osadzane na
serwerze aplikacyjnym obsługującym Java Enterprise. Standard ten
określa zestaw interfejsów programistycznych jakich musi
dostarczać zgodny serwer aplikacyjny.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Aplikacje rozproszone i komponenty
J2EE - definicja
J2EE - elementy
Cele J2EE
Oddzielenie niskopoziomowych szczegółów od logiki
biznesowej.
Niskopoziomowe działania obsługiwane przez kontener
aplikacji.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Aplikacje rozproszone i komponenty
J2EE - definicja
J2EE - elementy
Aplikacja wielowarstwowa J2EE
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Aplikacje rozproszone i komponenty
J2EE - definicja
J2EE - elementy
J2EE
Elementy J2EE
Java Database Connectivity (JDBC)
Java Naming and Directory Interface (JNDI)
Java Beans (EJB)
Java Server Pages (JSP)
Java Servlets
Remote Method Invocation (RMI)
Java IDL/CORBA
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Enterprise JavaBeans
Definicja wg Sun Microsystem
”Enterprise JavaBeans jest architekturą komponentową
wspierającą wytwarzanie aplikacji opartych na komponentach.
Aplikacje napisane z wykorzystaniem technologii EJB są
skalowalne, transakcyjne oraz bezpieczne. Są one napisane tylko
raz, a następnie można je umieścić na dowolnym serwerze
wspierającym specyfikację EJB.”
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Architektura EJB
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Kontener EJB
Bezpośrednie środowisko uruchomieniowe dla każdego
komponentu Enterprise JavaBeans
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Kontener EJB
Bezpośrednie środowisko uruchomieniowe dla każdego
komponentu Enterprise JavaBeans
Całkowicie pośredniczy w komunikacji pomiędzy
komponentem EJB a światem zewnętrznym
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Kontener EJB
Bezpośrednie środowisko uruchomieniowe dla każdego
komponentu Enterprise JavaBeans
Całkowicie pośredniczy w komunikacji pomiędzy
komponentem EJB a światem zewnętrznym
Oferuje komponentowi szereg usług o charakterze
systemowym: ochrona dostępu, obsługa transakcji, itp.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Kontener EJB
Bezpośrednie środowisko uruchomieniowe dla każdego
komponentu Enterprise JavaBeans
Całkowicie pośredniczy w komunikacji pomiędzy
komponentem EJB a światem zewnętrznym
Oferuje komponentowi szereg usług o charakterze
systemowym: ochrona dostępu, obsługa transakcji, itp.
Może uzyskać dostęp do usług kontenera EJB korzystając z
mechanizmu typu callback - w chwili powoływania do życia
obiektu komponentu EJB, kontener EJB przekazuje
komponentowi EJB pewien rodzaj uchwytu zwrotnego. Za
pomocą tego uchwytu obiekt komponentu EJB może
wykonywać wywołania metod kontenera EJB
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Ogólny proces tworzenia komponentu EJB
1
Przygotowanie kodu źródłowego klasy Java, reprezentującej komponent
EJB
2
Utworzenie interfejsu Java, reprezentującego punkt kontaktu świata
zewnętrznego z komponentem EJB:
interfejs Remote/Local, służący do wywoływania metod logiki
biznesowej komponentu EJB
3
Przygotowanie XML-owego pliku konfiguracyjnego - deskryptora instalacji
(Deployment Descriptor) lub uzupełnienie kodu o annotacje
4
Kompilacja całego przygotowanego kodu Java i utworzenie z niego pliku
JAR/EAR o specjalnej wewnętrznej strukturze katalogów
5
Umieszczenie przygotowanych plików w systemie plików serwera aplikacji;
zarejestrowanie komponentu EJB
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Enterprise JavaBeans
EJB
Specyfikacja EJB definiuje komponentową architekturę EJB oraz
interfejsy pomiędzy serwerem wspierającym EJB oraz
komponentem.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Enterprise JavaBeans
EJB
Specyfikacja EJB definiuje komponentową architekturę EJB oraz
interfejsy pomiędzy serwerem wspierającym EJB oraz
komponentem.
Typy Beanów
1
Session Beans (Wykonywanie zadań dla klienta aplikacji.)
2
Entity Beans (Reprezentują dane w bazie danych. Dane cały
czas dostępne.)
3
Message-Driven Beans (Zachowują się jak listener dla Java
Message Service API, przetwarzają wiadomości
asynchronicznie)
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - Remote
Remote Client - cechy
1
Może działać na innej maszynie, Java virtual machine (JVM)
niż enterprise bean, z którego korzysta.
2
Może być komponentem webowym, aplikacją kliencką lub
innym enterprise bean.
3
Dla remote client lokalizacja enterprise bean jest
transparentna.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - Remote
Remote Client - wymagania
1
Business interface enterprise bean musi posiadać annotację
@Remote:
@Remote
public interface InterfaceName { ... }
2
Enterprise bean musi posiadać annotację @Remote
specyfikującą implementowany interfejs:
@Remote ( InterfaceName . class )
public class BeanName implements InterfaceName { ... }
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - Local
Local Client - cechy
1
Musi działać na tej samej JVM jak enterprise bean, z którego
korzysta.
2
Może być komponentem webowym lub innym enterprise bean.
3
Dla lokalnego klienta lokalizacja enterprise bean nie jest
transparentna.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - Local
Local Client - wymagania
1
Business interface enterprise bean musi posiadać annotację
@Local:
@Local
public interface InterfaceName { ... }
2
Enterprise bean musi posiadać annotację @Local specyfikującą
implementowany interfejs:
@Local ( InterfaceName . class )
public class BeanName implements InterfaceName { ... }
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - wybór
Związki pomiędzy Beanami
Beany zależne od siebie powinny pracować Local
Np Bean odpowiedzialny za zakupy korzysta z Beana
wysyłającega maila potwierdzającego.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - wybór
Związki pomiędzy Beanami
Beany zależne od siebie powinny pracować Local
Np Bean odpowiedzialny za zakupy korzysta z Beana
wysyłającega maila potwierdzającego.
Rodzaj klienta
Jeżeli klient jest aplikacją zewnętrzną to dostęp Remote
W przypadku komponentów webowych decyzja zależy od
sposobu dystrybucji komponentów.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - wybór
Rozmieszczenie komponentów
Dostęp Remote umożliwia skalowalność systemu.
W przypadku aplikacji rozproszonych konieczny jest dostęp
Remote.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Dostęp do Beanów - wybór
Rozmieszczenie komponentów
Dostęp Remote umożliwia skalowalność systemu.
W przypadku aplikacji rozproszonych konieczny jest dostęp
Remote.
Wydajność
Dostęp Remote z reguły jest wolniejszy ze względu na
opóźnienia.
Jednak Remote umożliwia dystrybucję komponentów
pomiędzy kilka maszyn, co z kolei wpłynie na wzrost
wydajności w przypadku dużych aplikacji.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Zawartość Enterprise Bean
Enterprise bean class: Implementacja metod zadeklarowanych
w interfejsie biznesowym oraz metody cyklu życia.
Business Interfaces: Interfejs biznesowy deklarujący metody
implementowane przez klase beana.
Helper classes: Inne klasy wymagane przez klasę enterprise
bean, np klasy exception oraz utility.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Struktura Enterprise Bean
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Definicja
Architektura
Kontener EJB
Proces tworzenia komponentu EJB
Typy beanów
Dostęp do Beanów
Zawartość Enterprise Bean
Nazewnictwo
Konwencje nazewnictwa Beanów
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Session Beans
Definicja
Sesyjny komponent EJB to krótkotrwały obiekt wykorzystywany
przez pojedynczą aplikację klienta i nie współdzielony z innymi
aplikacjami, stanowiący logiczne rozszerzenie kodu aplikacji klienta
umieszczone po stronie serwera aplikacji.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Session Beans
Definicja
Sesyjny komponent EJB to krótkotrwały obiekt wykorzystywany
przez pojedynczą aplikację klienta i nie współdzielony z innymi
aplikacjami, stanowiący logiczne rozszerzenie kodu aplikacji klienta
umieszczone po stronie serwera aplikacji.
Dwa rodzaje:
Stateless
Stateful
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateless Session Beans
Instancja beana ma stan tylko na czas wywołania jego metody
Kontener EJB może przypisać dowolną nieużywaną instancję
beana klientowi
Lepsza skalowalność dla aplikacji z dużą liczbą użytkowników
Z reguły aplikacja wymaga mniejszej liczba Stateless Beans
niż Stateful Beans
Najczęściej oferują większą wydajność niż Stateful Beans
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateless Session Beans - Annotacje
@Stateless - definicja Stateless Beana
@Remote - zdalny interfejs dostępu do metod Beana
@Local - lokalny interfejs dostępu do metod Beana
@PostConstruct - metoda wywoływana po stworzeniu Beana
@PreDestroy - metoda wywoływana przed zniszczeniem Beana
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateless Session Beans - cykl życia
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateful Session Beans
Instancja obiektu tworzona dla sesji client-bean
Klient ’rozmawia’ z beanem, stąd stan beanu nazywany
’conversational state’
Stan zachowywany przez całą sesję client-bean
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateful Session Beans - Annotacje
@Stateful - definicja Stateful Beana
@Remote - zdalny interfejs dostępu do metod Beana
@Local - lokalny interfejs dostępu do metod Beana
@Remove - metoda wywoływana
@PostConstruct - metoda wywoływana po stworzeniu Beana
@PreDestroy - metoda wywoływana po zakończeniu metod
@Remove, ale przed usunięciem Beana
@PostActivate - metoda wywoływana po przesunięciu Beana z
’secondary storage’
@PrePassivate - metoda wywoływana przed przesunięciem Beana do
’secondary storage’
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateful Session Beans - cykl życia
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateful Session Beans - annotacje
Interfejs
@Remote
public InterfaceName {
// ... metody b i z n e s o w e
}
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Stateful Session Beans - annotacje Klasa Bean
import
import
import
import
import
import
javax . ejb . Remove ;
javax . ejb . Stateful ;
javax . annotation . PostConstruct ;
javax . annotation . PreDestroy ;
javax . ejb . PostActivate ;
javax . ejb . PrePassivate ;
@Stateful
public class NameBean implements InterfaceName {
// ... metody b i z n e s o w e
@Remove
public void remove () {}
@Pos tConstruct
public void postConstruct () {}
@PreDestroy
public void preDestroy () {}
@PostActivate
public void postActivate () {}
@PrePassivate
public void prePassivate () {}
}
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Kiedy stosować Session Beans
Session Beans
Stan Beana nie jest zapamiętywany, istnieje przez krótki okres
czasu(np kilka godz.)
W danym momencie tylko jeden klient ma dostęp do instancji
Beana
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Kiedy stosować Session Beans
Stateful Beans
Stan Beana reprezentuje interakcje pomiędzy konkretnym
użytkownikiem
Bean musi przechowywać dane przez czas działania kilku
metod
Bean pośredniczy pomiędzy klientem a innymi komponentami
aplikacji
Stan Beana jest wykorzystywany przez inne komponenty
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Session Beans
Stateless Session Beans
Stateful Session Beans
Annotacje przykład Stateful
Kiedy stosować Session Beans?
Kiedy stosować Session Beans
Stateless Beans
Stan Beana nie przechowuje danych dla konkretnego klienta
Metoda Beana wykonuje generalne zadanie dla wszystkich
klientów (np wysłanie maila potwierdzającego)
Bean pobiera dane z bazy danych, które są często
wykorzystywane
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Entity Beans
Definicja
Encyjny komponent EJB reprezentuje dane, które są trwale
przechowywane w systemie bazy danych; cechuje się długim czasem
życia, pozwala na atomowe, transakcyjne modyfikacje bazy danych,
współdzielony przez wielu klientów, dostępny dla wielu sesji.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Persistence
Dane przechowywane w systemie danych.
Dane utrwalane na stałe. Nawet w przypadku wyłączenia
aplikacji/serwera.
Dwa rodzaje: bean-managed oraz container-managed
bean-managed - bean sam dba o komunikację z baza danych.
container-managed - kontener sam generuje niezbędne
odwołania do bazy danych.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Wymagania klasy encyjnej
Klasa musi być annotowana javax.persistence.Entity
Musi posiadać publiczny lub protected bezargumentowy
konstruktor.(Może posiadać inne konstruktory)
Żadna persystowana zmienna nie może być finalna.
Nie posiada metod fianlnych.
Może dziedziczyć po klasach nieencyjnych.
Zmienne persystowane muszą być prywatne lub protected.
Dostęp jest realizowany jedynie przez gettery, settery oraz
metody biznesowe.
Jeżeli instancja encji jest przekazywana przez wartość jako
obiekt detached(np przez interfejs Remote Session Bean) to
klasa musi implementować interfejs Serializable.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Persystentne atrybuty klasy encyjnej
Java primitive types
Serializowane obiekty(np java.sql.Date, java.math.BigDecimal,
java.util.Date)
Serializowane obiekty zdefiniowane przez użytkownika
Enumeracje
Inne encje lub kolekcje encji
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Wsparcie dla mapowania relacji
One-to-one ( @OneToOne )
One-to-many ( @OneToMany )
Many-to-one ( @ManyToOne )
Many-to-many ( @ManyToMany )
Inheritance (@Inheritance, strategie: InheritanceType
SINGLE TABLE, JOINED, TABLE PER CLASS )
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Zarządzanie encjami
Encje zarządzane przez javax.persistence.EntityManager
Każdy Entity Manager jest związany z persistence context
persistence context - zbiór zarządzanych encji
EntityManager pozwala na: tworzenie, uaktualnianie,
usuwanie, znajdywanie po kluczu głównym oraz uruchamianie
zapytań na encjach.
Dwa sposoby zarządzania EntityManagerem:
Container-Managed oraz Application-Managed
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Container-Managed EntityManager
Instancja EntityManagera jest automatycznie propagowana
pomiędzy komponentami kontenera, które używają instancji
EM w pojedynczej transakcji Java Transaction Architecture
(JTA)
Transakcje JTA najczęściej wymagają wywołań w kilku
komponentach aplikacji, które potrzebują jednego persistence
context
Jest to możliwe za pomocą wstrzykiwania kontekstu do
komponentów poprzez annotację
javax.persistence.PersistenceContext
@PersistenceContext
EntityManager em ;
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Application-Managed EntityManager
EntityManager nie jest propagowany automatycznie.
Aplikacja tworzy instancję EntityManager’a przy pomocy
metody createEntityManager
javax.persistence.EntityManagerFactory
Instancję EntityManagerFactory otrzymuje się poprzez
wstrzykiwanie za pomocą annotacji:
javax.persistence.PersistenceUnit
@ P e r s i s t e n c e U ni t
E n t i t y M a n a g e r F a c t o r y emf ;
EntityManager em = emf . c r e a t e E n t i t y M a n a g e r ();
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Entity Beans - cykl życia
Stany instancji Encji
New - nowa encja, niepersystowana, niezwiązana z żadnym
kontekstem
Managed - encja persystowana związana z kontekstem
Detached - encja persystowana niezwiązana z kontekstem
Removed - encja persystowana związana z kontekstem, która
ma zostać usunięta
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Znajdywanie encji
@PersistenceContext
EntityManager em ;
public void enterOrder ( int custID , Order newOrder ) {
Customer cust = em . find ( Customer . class , custID );
cust . getOrders (). add ( newOrder );
newOrder . setCustomer ( cust );
}
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Zapamiętywanie encji
@PersistenceContext
EntityManager em ;
...
public LineItem cre ateLineI tem ( Order order , Product product ,
int quantity ) {
LineItem li = new LineItem ( order , product , quantity );
order . getLineItems (). add ( li );
em . persist ( li );
return li ;
}
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Usuwanie encji
@PersistenceContext
EntityManager em ;
...
public void removeOrder ( Integer orderId ) {
try {
Order order = em . find ( Order . class , orderId );
em . remove ( order );
}...
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Dynamic queries
Definiowane bezpośrednio w logice biznesowej aplikacji.
Wykorzystywana metoda: EntityManager.createQuery .
Wykorzystuje Java Persistence Query Language.
Np:
@PersistenceContext
EntityManager em ;
...
public List findWithName ( String name ) {
return em . createQuery (
" SELECT c FROM Customer c WHERE c . name " +
" LIKE : custName " )
. setParameter ( " custName " , name )
. setMaxResults (10)
. getResultList ();
}
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Static queries
Definiowane w metadanych.
Oznaczane annotacją javax.persistence.NamedQuery
Np:
@NamedQuery (
name = " f i n d A l l C u s t o m e r s W i t h N a m e " ,
query = " SELECT c FROM Customer c WHERE c . name " +
" LIKE : custName "
)
...
@PersistenceContext
EntityManager em ;
...
customers = em . c r e a t e N a m e d Q u e r y ( " f i n d A l l C u s t o m e r s W i t h N a m e " )
. setParameter ( " custName " , " Smith " )
. getResultList ();
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Persistence Units
Definiuje zestaw wszystkich klas encyjnych zarządzanych przez
instancję EntityManager w aplikacji.
Definiowany jest w pliku konfiguracyjnym persistence.xml
Każdy unit musi być definiowany przez unikatową nazwę
Może znajdować się w pliku EJB JAR, wtedy powinien
znajdować się w folderze META-INF EJB JAR’a
Może znajdować się w pliku WAR, wtedy powinien znajdować
się w folderze WEB-INF/classes/META-INF
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Przykładowy plik persistance.xml
< persistence >
< persistence - unit name = " O rd e rM an ag e me nt " >
< description > This unit manages orders and customers .
It does not rely on any vendor - specific features
and can therefore be deployed to any persistence
provider .
</ description >
<jta - data - source > jdbc / MyOrderDB </ jta - data - source >
<jar - file > MyOrderApp . jar </ jar - file >
< class > com . widgets . Order </ class >
< class > com . widgets . Customer </ class >
</ persistence - unit >
</ persistence >
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Entity Beans
Cechy Entity Beans
Zarządzanie encjami
Cykl życia
Operacje na encjach
Zapytania
Persistence Units
Entity Bean - kiedy stosować?
Entity Bean - kiedy stosować?
Bean reprezentuje encję biznesową.
Stan beana jest zapamiętywany w zewnętrznym systemie
danych.
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Message-Driven Beans
Idea aplikacji
Cykl życia
Message-Driven Bean Class
Message-Driven Beans
Definicja
Komunikatowy komponent EJB jest asynchronicznym
konsumentem komunikatów JMS (Java Messaging Service)
pochodzących ze środowisk kolejkowych. Uruchamiany wtedy, kiedy
nadchodzi komunikat od klienta, wykonywany asynchronicznie,
może modyfikować zawartość bazy danych, bezstanowy
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Message-Driven Beans
Idea aplikacji
Cykl życia
Message-Driven Bean Class
Message-Driven - idea aplikacji
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Message-Driven Beans
Idea aplikacji
Cykl życia
Message-Driven Bean Class
Message-Driven - cykl życia
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Message-Driven Beans
Idea aplikacji
Cykl życia
Message-Driven Bean Class
Message-Driven Bean Class
Musi być annotowana @MessageDriven, jeżeli nie należy
wyspecyfikować to w deskryptorze.
Klasa musi być publiczna.
Klasa nie może być abstrakcyjna ani finalna.
Posiada publiczny, bezargumentowy konstruktor.
Nie może definiować metody finalize.
Zaleca się, aby implementowała interfejs
javax.jms.MessageListener.
Implementuje jedną metodę onMessage(z interfejsu
MessageListener).
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Enterprise JavaBeans
1
2
3
4
5
6
7
8
9
10
11
JBoss AS
BEA WebLogic Server
iPlanet
Oracle
Orion Server
WebSphere
NetDynamics
JRun Server
JOnAS
Pramati Server
Power Tier for J2EE
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Podsumowanie
Bibliografia
Podsumowanie
Enterprise JavaBeans stanowią naturalny wybór architektury
aplikacji rozproszonych dla programisty Java
W popularnych zastosowaniach, technologia EJB służy do
realizacji wielowarstwowych aplikacji, w których interakcja z
bazą danych obsługiwana jest przez komponenty encyjne, a
przetwarzanie danych - przez komponenty sesyjne, będące
klientami komponentów encyjnych
Jarosław Gołaszewski Jakub Wojnicki
EJB
Wstęp
EJB 3.0
Session Beans
Entity Beans
Message-Driven Beans
Serwery aplikacji
Podsumowanie
Podsumowanie
Bibliografia
Bibliografia
1
http://java.sun.com/javaee/5/docs/tutorial/doc/
2
http://java.sun.com/products/ejb/docs.html
3
http://www.roseindia.net/javabeans/
4
http://docs.jboss.com/ejb3/app-server/tutorial/index.html
Jarosław Gołaszewski Jakub Wojnicki
EJB

Podobne dokumenty