Enterprise JavaBean 3.0

Transkrypt

Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Enterprise JavaBean 3.0
Michał Szymczak, Grzegorz Dziemidowicz
Politechnika Wrocławska
Inżynieria Oprogramowania
26 maja 2009
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Plan prezentacji
Plan prezentacji
Ogólne spojrzenie na EJB
EJB jako komponent
EJB jako framework
Typy beanów
Session bean
Message-driven bean
Entity
Rozbudowany przykład
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Ogólne spojrzenie na EJB
Ogólne spojrzenie na EJB
Platforma ułatwiająca tworzenie rozproszonych aplikacji w
Javie
Szybsze pisanie skalowalnych, niezawodnych i bezpiecznych
aplikacji
Umożliwia programiście dostosowanie oferowanych
funkcjonalności do potrzeb i wymagań realizowanego projektu
Pozwala programiście skupić się na tworzeniu logiki
biznesowej, a nie infrastruktury
Dostarcza gotowych do wykorzystania funkcjonalności z
zakresu: bezpieczeństwa, transakcyjności, automatycznej
perzystencji, web services, wielowątkowości . . .
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Ogólne spojrzenie na EJB
Ogólne spojrzenie na EJB
Możliwości EJB rozpatrujemy w dwóch płaszczyznach
Component
Framework
EJB to kod Java wykonywany w EJB container
Kod musi być tam umieszczony (deployment) przed tym jak
zaczniemy go używać
Container współpracuje z JVM celem dostarczenia nowej
funkcjonalności
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
EJB jako komponent
Pojedynczy element EJB znajdujący się po stronie serwera
Odpowiada za konkretne zadania (realizuje konkretne funkcje)
Wykorzystuje się tylko te funkcje komponentów, które są
aktualnie programiście potrzebne
Poprzez wykorzystanie funkcjonalności oferowanych przez
komponenty, programista kreuje logikę biznesową
3 podstawowe typy komponentów
Session
Message-driven
Entity
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
EJB jako komponent
Rysunek: Program Java realizowany w technologii Enterprise JavaBeans
składa się z dwóch rodzajów elementów składowych: aplikacji klienta i
zdalnych komponentów przetwarzania danych. Aplikacja klienta
komunikuje się poprzez sieć z komponentami przetwarzania danych,
przesyłając do nich żądania zdalnego wykonania metod. Wyniki działania
tych metod są następnie tą samą drogą odsyłane do aplikacji klienta.
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
EJB jako framework
Skupia się na dostarczaniu funkcjonalności, wspólnej dla
większości projektów programistycznych:
Zarządzanie stanem aplikacji
Zapisywanie i pobieranie danych z SZBD
Zarządzanie transakcjami
Wprowadzanie mechanizmów zabezpieczeń
(i wiele innych)
Framework dba również o wydajność, skalowalność tworzonej
aplikacji oraz odporność na błędy
”Włączanie”i konfigurowanie funkcjonalności odbywa się przez
adnotacje lub/oraz pliki konfiguracyjne XML
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Aplikacje wielowarstwowe
Rysunek: Schemat wykorzystania EJB w aplikacjach wielowarstwowych
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Typy beanów
Trzy typy beanów, podzielone ze względu na funkcjonalności:
Session
Message-driven
Entity
Podział przydatny, gdyż:
Ułatwia tworzenie aplikacji wielowarstwowych
Uniemożliwia (utrudnia) tworzenie beanów, które miałyby
przeciwstawne właściwości
Ukierunkowanie na funkcjonalność
Nie ma beana "od wszystkiego" – czytelność kodu
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Session beans
Służą do modelowania procesów biznesowych
Skupiają się na wykonywaniu zaprogramowanych akcji
Ich trwałość jest ograniczona (zależy od typu obiektu) i
zgromadzone dane nie przetrwają np. restartu serwera
Mogą zostać wywołane lokalnie lub zdalnie
Typy session beans:
Bezstanowe (stateless)
Kolejne wywołania (nawet z tego samego klienta) nie mają
między sobą powiązania
np. wykonanie płatności kartą
Mogą zostać łatwo przerobione na web service
Stanowe (stateful)
Automatycznie zachowują swój stan po każdorazowym
wywołaniu przez klienta
np. sklep internetowy
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Session beans - kod
Listing 1: interfejs beana
package e n t e r p r i s e . s t a t e l e s s ejb ;
i m p o r t j a v a x . e j b . Remote ;
@Remote
public interface StatelessSession
{
String hello ();
}
Listing 2: klasa beana
package e n t e r p r i s e . s t a t e l e s s ejb ;
import javax . ejb . S t a t e l e s s ;
@Stateless
p u b l i c c l a s s StatelessSessionBean implements S t a t e l e s s S e s s i o n
{
public String hello ()
{
r e t u r n ” H e l l o World ! ” ;
}
}
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Message-driven beans
Podobnie jak session beans wykonują zadania/akcje jako część
logiki biznesowej aplikacji
Nie mogą być wywołane bezpośrednio przez klienta. Klient
wysyła wiadomości do serwera wiadomości i to on dopiero
przekazuje instrukcje sterujące do MDB
Używane w celu zapewnienia najwyżej wydajności oraz
przetwarzania asynchronicznego
Popularne messaging servers: IBM WebSphere MQ, SonicMQ,
Oracle Advanced Queueing, TIBCO
MDBs mogą następnie wywoływać akcje na innych beanach
(także MDB – pośrednio poprzez serwery wiadomości)
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Message-driven bean - kod
Listing 3: MDB
p a c k a g e e n t e r p r i s e . mdb e j b ;
import javax . ejb . ActivationConfigProperty ;
i m p o r t j a v a x . e j b . MessageDriven ;
i m p o r t j a v a x . jms . Message ;
i m p o r t j a v a x . jms . M e s s a g e L i s t e n e r ;
@MessageDriven ( mappedName = ” jms / d e s t i n a t i o n N a m e ” , a c t i v a t i o n C o n f i g = {
@ActivationConfigProperty
( propertyName = ” acknowledgeMode ” , p r o p e r t y V a l u e = ” Auto−a c k n o w l e d g e ” ) ,
@ActivationConfigProperty
( propertyName = ” d e s t i n a t i o n T y p e ” , p r o p e r t y V a l u e = ” j a v a x . jms . Queue ” )
})
p u b l i c c l a s s mdbBean i m p l e m e n t s M e s s a g e L i s t e n e r
{
p u b l i c mdbBean ( ) { }
p u b l i c v o i d onMessage ( Message message ) { }
}
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Entity beans
Służą do modelowania danych biznesowych
Odwzorowują byty z SZBD w obiektowe klasy Javy
Poprzez wykorzystanie persistance providera (wg JPA - Java
Persistence API) entities zostają wprowadzone permanentnie
do bazy danych (przetrwają np. restart serwera)
Popularni persistance providerzy: Hibernate, TopLink
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Entity beans - kod
Listing 4: Entity bean
package e n t e r p r i s e . database ;
import java . io . S e r i a l i z a b l e ;
import javax . persisten ce . Entity ;
import j a v a x . p e r s i s t e n c e . GeneratedValue ;
import j a v a x . p e r s i s t e n c e . GenerationType ;
import javax . persisten ce . Id ;
@Entity
p u b l i c c l a s s P e r so n i m p l e m e n t s S e r i a l i z a b l e {
p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 1L ;
@Id
@GeneratedValue ( s t r a t e g y = G e n e r a t i o n T y p e .AUTO)
p r i v a t e Long i d ;
p u b l i c Long g e t I d ( ) { r e t u r n i d ; }
p u b l i c v o i d s e t I d ( Long i d ) { t h i s . i d = i d ; }
@Override
p u b l i c i n t hashCode ( ) { . . . }
@Override
p u b l i c boolean equals ( Object o b j e c t ) { . . . }
@Override
public String toString () { . . . }
}
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
EJB jako komponent
EJB jako framework
Typy beanów
Klient - kod
Listing 5: Prosty klient
package e n t e r p r i s e . s t a t e l e s s a p p c l i e n t ;
i m p o r t j a v a x . e j b . EJB ;
import e n t e r p r i s e . s t a t e l e s s ejb . ∗ ;
public class StatelessSessionAppClient
{
@EJB
private static StatelessSession sless ;
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] )
{
System . out . p r i n t l n ( s l e s s . h e l l o ( ) ) ;
}
}
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Bar
Wirtualny bar
Barman
Może witać klientów (zapisuje ich sobie w notesie) i rzucać
złośliwe uwagi po ich odejściu
Może pokazać kartę drinków
Umie obsłużyć cudzoziemców
Klient
Może pokazać swoje Id
Może zamówić drinka, jeśli pokaże ID
Może opuścić bar
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Bar - projekt
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Przygotowanie środowiska
Środowisko programistyczne - NetBeans 6.5
Serwer aplikacji - GlassFish V2
Baza danych - MySQL 5.1
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Nowy projekt
Tworzymy nowy projekt Java EE (Enterprise Application)
Tworzymy moduł EJB i moduł aplikacji internetowej
Wybieramy nasz serwer aplikacji
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Encja - drink
Tworzymy nową encje Drink
Tworzymy persistence unit (grupa encji używanych razem)
Wybieramy persitence provider (TopLink)
Tworzymy nowe źródło danych (definujemy połączenie z bazą
danych)
Dodajemy adnotacje na potrzeby mapowania
obiektowo-relacyjnego
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Barman - stateless bean
Tworzymy session bean
Dodajemy metody biznesowe
Tworzymy klienta (strona JSF)
Cykl życia
@PostConstruct
@PreDestroy
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Visit - statefull bean
Jak używać statefull beanów z warstwy WEB
Cykl życia
@PrePassivate
@PostActivate
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
TimerService
Umożliwia wywołanie metody Stateless / Message Driven
beana, po określonym czasie (lub w interwałach czasu)
@Timeout
Prosty w użyciu ale nie tak funkcjonalny jak zewnętrzne
biblioteki
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Interceptors
Programowanie aspektowe w EJB
Logowanie w barze ( @Interceptors(BarLogger.class) )
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Order Message Driven Bean
Aplikacja przyjmuje żądanie klienta i przekazuje je do kolejki
MDB nasłuchuje kolejkę i wykonuje żądania
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
Barman jako Web Service
Stateless bean mogą być łatwo zamienione w Web Service
@WebService
WebService czy RMI?
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Sun Certified Business Component Developer (SCBCD)
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Q&A
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0
Plan prezentacji
EJB w ogóle
EJB w szczególe
Bibliografia
Bibliografia
D. Panda et al., EJB3 in Action, Manning, Greenwich 2007
R. P. Sriganesh et al., Mastering Enterprise JavaBeans 3.0,
Wiley Publishing Inc., Indianapolis 2006
Michał Szymczak, Grzegorz Dziemidowicz
Enterprise JavaBean 3.0

Podobne dokumenty