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