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



Podobne dokumenty
Enterprise JavaBeans (EJB)

Java wybrane technologie

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz.

Wprowadzenie do Enterprise JavaBeans 2.0

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Podstawowe informacje o technologii Java EE 7

Enterprise JavaBean 3.0

Java Enterprise Edition

EJB 3.0 (Enterprise JavaBeans 3.0)

Usługa TimerService

Enterprise JavaBeans

Komponenty sterowane komunikatami

Programowanie komponentowe 5

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

Dostęp do baz danych z aplikacji J2EE

Java wybrane technologie

Piotr Matkowski Wprowadzenie do J2EE 20 kwietnia "Unfortunately, no one can be...told what the J2EE is. You have to see it for yourself.

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

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

Dostęp do baz danych w aplikacjach Java EE

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

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

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

Co nowego w Java EE?

mgr inż. Michał Paluch

Co nowego w Java EE?

Stanowe komponenty sesyjne

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

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

1 Wprowadzenie do J2EE

Zaawansowane Aplikacje Internetowe

Aplikacje internetowe i rozproszone - laboratorium

Enterprise Java Beans wykład 7 i 8

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

Podstawowe informacje o technologii Java EE 6

Enterprise JavaBeans 3.0

Message Oriented Middleware

Message Oriented Middleware

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

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

Transakcje w systemach Java Enterprise Korzystanie z systemów kolejkowania w serwerach aplikacji

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Obs³uga transakcji rozproszonych w jêzyku Java

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Sieci komputerowe cel

Kolejkowanie wiadomości Standard MQ (JMS)

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Wzorce projektowe warstwy aplikacji

Testowanie i wdrażanie oprogramowania Emulator systemu bankowego

Kancelaris - Zmiany w wersji 2.50

Spring MVC Andrzej Klusiewicz 1/18

Aplikacje internetowe i rozproszone - laboratorium

Budowa komponentów Enterprise JavaBeans

Wybrane działy Informatyki Stosowanej

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

Oracle ADF i JBoss Seam dwa skrajnie różne podejścia do współpracy JSF z EJB

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Microsoft Management Console

Enterprise JavaBeans (EJB)

Rozwiązywanie nazw w sieci. Identyfikowanie komputerów w sieci

Automatyzacja procesu publikowania w bibliotece cyfrowej

SOP System Obsługi Parkingów

Architektura typu klient - serwer. Oprogramowanie systemów równoległych i rozproszonych. Wykład 6. Cechy architektury klient - serwer

TAJEMNICA BANKOWA I OCHRONA DANYCH OSOBOWYCH W PRAKTYCE BANKOWEJ

Wpływ jakości świadczonych usług na doświadczenia abonenta w cyfrowym domu. Janusz Kilon

WYDZIAŁ ELEKTRONIKI INFORMATYKI I TELEKOMUNIKACJI

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

API transakcyjne BitMarket.pl

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Regulamin korzystania z Systemu invooclip przez Adresata i Odbiorcę

Wyzwania bezpieczeństwa nowoczesnych platform nauczania zdalnego

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Opis instalacji systemu Intranet Komunikator

Sieci komputerowe. Definicja. Elementy

Efektywna strategia sprzedaży

Zapytanie ofertowe M.M. Druk Serwis Sp. z o.o.

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Krakowska Akademia im. Andrzeja Frycza Modrzewskiego. Karta przedmiotu. obowiązuje studentów, którzy rozpoczęli studia w roku akademickim 2013/2014

INFORMATOR TECHNICZNY WONDERWARE

Tomasz Dobek.

Ajax a bezpieczeństwo aplikacji webowych. Jakub Wierzgała

DOTACJE NA INNOWACJE. Zapytanie ofertowe

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Wybrane działy Informatyki Stosowanej

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

Lista standardów w układzie modułowym

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Microsoft Windows GDI

Programowanie komponentowe

Transkrypt:

Wielowarstwowe aplikacje internetowe Plan wykładu Enterprise JavaBeans (EJB) Wprowadzenie do technologii EJB Typy komponentów EJB Klienci dla komponentów EJB Transakcje w EJB JavaServer Faces (JSF) Enterprise JavaBeans (EJB) Rola EJB na platformie Java EE Komponenty pracujące po stronie serwera aplikacji Zawierają logikę biznesową aplikacji Uruchamiane w kontenerze EJB oferującym usługi systemowe Wykorzystywane do budowy złożonych aplikacji rozproszonych na zasadzie składania z klocków Obsługują zdalnych i lokalnych klientów Klientami mogą być aplikacje, serwlety, JSP, inne EJB Nie wszystkie aplikacje Java EE wykorzystują technologię EJB EJB realizują logikę biznesową, zostawiając innym elementom aplikacji logikę prezentacji przeglądarka aplikacja klienta żądanie HTTP HTML wywołanie metody wynik serwer aplikacji (serwer J2EE) kontener serwletów JSP kontener EJB komponent EJB

Kiedy użyć EJB? Aplikacja musi być skalowalna możliwość rozproszenia komponentów Zawansowane przetwarzanie transakcyjne kontener oferuje usługi transakcyjne deklaratywne specyfikowanie granic transakcji transakcje rozproszone Obsługa różnych typów klientów przeglądarka klient aplikacyjny Historia technologii EJB Od początku ważny element technologii Java EE Do wersji EJB 2.1 skomplikowane i nieefektywne wiele interfejsów obowiązkowe deskryptory instalacji w XML interfejsy i klasy zależne od EJB API nieefektywne komponenty encyjne W wersji EJB 3.0 znaczące uproszczenie mniej plików źródłowych (POJO, POJI) adnotacje zamiast deskryptorów XML wstrzykiwanie zależności (ang. dependency injection) komponenty encyjne zastąpione przez Java Persistence API (JPA) Typy komponentów EJB (EJB 3.0) Sesyjne (Session Beans): realizują konkretne zadanie dla klienta mogą być stanowe lub bezstanowe w danej chwili nie są współdzielone ich stan nie wykracza poza sesję Komunikatowe (Message-Driven Beans): asynchroniczni konsumenci komunikatów najczęściej wykorzystują technologię Java Message Service (JMS) i nasłuchują nadejścia komunikatu JMS klienci nie odwołują się do nich bezpośrednio Typy sesyjnych EJB Stanowe (ang. stateful) zmienne instancji komponentu reprezentują stan dla konkretnej sesji z klientem stan określany jako stan konwersacji, utrzymywany podczas sesji z klientem, obejmującej wiele wywołań metod Bezstanowe (ang. stateless) nie pamiętają stanu konwersacji z klientem użyteczny stan tylko na czas pojedynczego wywołania metody mogą implementować Web Service

Stanowy czy bezstanowy? Cykl życia bezstanowego sesyjnego EJB Odpowiedź nie jest oczywista, ponieważ bezstanowe mogą być efektywniejsze Stanowy odpowiedni gdy: komponent reprezentuje interakcję z klientem komponent musi zachowywać stan między wywołaniami metod komponent zarządza przepływem sterowania Bezstanowy odpowiedni gdy: komponent realizuje ogólne zadanie komponent nie pamięta danych dla konkretnego klienta Nie istnieje Wstrzykiwanie zależności Wywołania @PostConstruct Wywołania @PreDestroy Gotowy Cykl życia stanowego sesyjnego EJB Struktura kodu sesyjnego EJB Nie istnieje Wstrzykiwanie zależności Wywołania @PostConstruct @Remove lub wygaśnięcie sesji Wywołania @PreDestroy Wygaśnięcie sesji Gotowy @PostActivate @PrePassivate Kod sesyjnego komponentu EJB stanowią: klasa komponentu interfejsy biznesowe klasy pomocnicze Konwencje nazw dla EJB: nazwa komponentu: <nazwa>bean, np. BasketBean nazwa klasy komponentu <nazwa>bean, np. BasketBean interfejs biznesowy: <nazwa>, np. Basket Pasywny

Komponent sesyjny - Przykład KonwerterBean.java import javax.ejb.*; import javax.ejb.*; Konwerter.java @Remote public interface Konwerter { public double fahrnacels(double f); public double celsnafahr(double c); @Stateless public class KonwerterBean implements Konwerter { public double fahrnacels(double f) { return (5.0 / 9.0) * (f - 32); Klienci dla sesyjnych EJB Klient zdalny (ang. remote client) może (ale nie musi!) działać na innej JVM i innym serwerze może nim być serwlet, JSP, EJB lub klient aplikacyjny lokalizacja EJB dla klienta jest transparentna interfejs biznesowy EJB oznaczony @Remote Klient lokalny (ang. local client) musi działać na tej samej JVM może nim być serwlet, JSP lub EJB lokalizacja EJB dla klienta nie jest transparentna interfejs biznesowy EJB oznaczony @Local public double celsnafahr(double c) { return (9.0 / 5.0) * c + 32; Dostęp lokalny czy zdalny? Uzyskanie referencji do EJB przez klienta - dependency injection Związki między komponentami: ścisłe czy luźne? Typ klientów: aplikacje czy serwlety/jsp/ejb? Planowane rozproszenie dla skalowalności? Uwagi: dostęp zdalny daje elastyczność dostęp lokalny efektywniejszy wpływ rozproszenia na wydajność nie jest jednoznaczny interfejs biznesowy może być jednocześnie oznaczony jako @Local i @Remote Domyślna nazwa w JNDI klient typu serwlet/jsp/ejb klient aplikacyjny Dowolna nazwa w JNDI klient typu serwlet/jsp/ejb @EJB Konwerter konw; double c = konw.fahrnacels(35.5); @EJB static Konwerter konw; @EJB(name="ejb/Konwerter ) Konwerter konw; klient aplikacyjny @EJB(name="ejb/Konwerter ) static Konwerter konw;

Uzyskanie referencji do EJB przez klienta - JNDI lookup Domyślna nazwa w JNDI InitialContext ic = new InitialContext(); Konwerter konw = (Konwerter) ic.lookup(konwerter.class.getname()); double c = konw.fahrnacels(35.5); Dowolna nazwa w JNDI InitialContext ic = new InitialContext(); Konwerter konw = (Konwerter) ic.lookup("ejb/konwerter ); double c = konw.fahrnacels(35.5); Message-Oriented Middleware (MOM) Infrastruktura klient-serwer umożliwiająca rozproszenie aplikacji na wielu heterogenicznych platformach orientacja na elastyczność i współpracę heterogenicznych komponentów aplikacji Cechą wyróżniającą MOM od innych rozwiązań middleware jest asynchroniczna forma komunikacji nadawca wiadomości nie jest blokowany po jej wysłaniu struktura przesyłanych wiadomości zależy od aplikacji Implementacje MOM Java Message Service (JMS) IBM WebSphere MQ (dawniej MQSeries) Sun ONE Middleware (dawniej iplanet) BEA MessageQ Oracle Advanced Queueing TIBCO Rendezvouz Microsoft MSMQ JMS Standard Java dla systemów wymiany wiadomości część Java EE dotyczy Enterprise Messaging (termin używany przez Sun dla Message-Oriented Middleware) Ułatwia implementację systemów definiując zestaw koncepcji i strategii programistycznych, które będą wspierane przez systemy zgodne ze standardem Rozszerza Java EE o możliwość asynchronicznych interakcji między luźno powiązanymi komponentami Java EE i aplikacjami spadkowymi zdolnymi do wymiany wiadomości

Cechy JMS Model Point-to-Point Używa wiadomości do komunikacji między komponentami aplikacji (zamiast bezpośrednich wywołań metod) Umożliwia luźne powiązanie komponentów aplikacji Wspiera dwa modele dostarczania wiadomości: Point-to-Point Publish/Subscribe Umożliwia komunikację asynchroniczną lub synchroniczną wysyła Komunikacja 1-do-1 Asynchroniczny odbiorca Wiarygodna komunikacja kolejka (queue) konsumuje potwierdza Model Publish/Subscribe Architektura aplikacji JMS publikuje temat (topic) subskrybuje dostarcza Komunikacja 1-do-wielu Synchroniczny odbiorca (musi być on-line!) subskrybuje dostarcza UWAGA: nadawca jest asynchroniczny w obu modelach! JMS client (producer) JMS kolejka/temat JMS provider JMS JMS client (consumer) Obiekty tworzone przez administratora, umieszczane w przestrzeni nazw JNDI serwera Java EE: Connection factories Destinations (kolejki lub tematy)

Cykl życia komunikatowego EJB Struktura kodu komunikatowego EJB Nie istnieje Wstrzykiwanie zależności Wywołania @PostConstruct Wywołania @PreDestroy Gotowy Komunikatowe EJB nie są bezpośrednio wywoływane przez klientów, więc nie posiadają interfejsów biznesowych Kod komunikatowego EJB stanowi jedynie klasa komponentu: implementująca javax.jms.messagelistener posiadająca implementację metody onmessage() oznaczona adnotacją @MessageDriven posiadająca publiczny bezargumentowy konstruktor onmessage() Komponent komunikatowy - Przykład Korzystanie z komunikatowego EJB 1 2 @MessageDriven(mappedName= jms/queue ) public class MyMessageBean implements MessageListener { public void onmessage(message msg) { TextMessage txtmsg = null; Poprzez wysłanie komunikatu do miejsca przeznaczenia, z którym związany jest komponent komunikatowy 1 2 @Resource(mappedName="jms/ConnectionFactory") private static ConnectionFactory cf; @Resource(mappedName= jms/queue ) private static Queue queue; 3 4 try { if (msg instanceof TextMessage) { txtmsg = (TextMessage) msg; String txt = txtmsg.gettext(); catch (JMSException e) { 3 4 5 6 Connection conn = cf.createconnection(); Session session = conn.createsession(false,session.auto_acknowledge); MessageProducer producer = session.createproducer(queue); TextMessage msg = session.createtextmessage(); msg.settext("komunikat testowy"); 7 producer.send(msg);

Usługa timera w EJB Przykład wykorzystania timera w EJB Umożliwia automatyczne uruchomienie metody komponentu przez kontener: w podanej chwili w czasie po upłynięciu podanego czasu oczekiwania cyklicznie zgodnie z podanym interwałem czasowym Przydatna w aplikacjach modelujących przepływy pracy Dla sesyjnych bezstanowych i komunikatowych EJB Realizowana poprzez interfejs TimerService Charakterystyka usługi timera: trwałe, transakcyjne, nie dla aplikacji real-time 1 2 3 4 @Stateless public class MyTimerBean implements MyTimer { MyTimerBean.java @Resource TimerService ts; public void createtimer(long waittime) { Timer timer = ts.createtimer(waittime, "New timer"); @Timeout public void timeout(timer timer) { MyTimer.java @Remote public interface MyTimer { public void createtimer(long waittime); Transakcje w EJB CMT: Atrybut transakcyjny Zarządzane przez kontener (CMT) specyfikowane deklaratywnie: atrybut transakcyjny cały kod metody w jednej transakcji Zarządzane przez komponent (BMT) granice transakcji wyznaczane programowo transakcje JDBC w ramach połączenia JDBC transakcje JTA (Java Transaction API) zarządzane przez zarządcę transakcji Java EE mogą być rozproszone Specyfikowany za pomocą adnotacji @TransactionAttribute na poziomie metody lub klasy komponentu EJB @TransactionAttribute(REQUIRED) @Stateful public class MyTransBean implements MyTrans { public void methoda { @TransactionAttribute(REQUIRES_NEW) public void methodb { public void methodc {

CMT: Wartości atrybutu transakcyjnego Klient methoda() { bean.methodb(); Komponent EJB (bean) @TransactionAttribute() methodb() { BMT Transakcje JTA API do zarządcy transakcji Java EE serwera aplikacji Transakcje realizowane poprzez interfejs UserTransaction 1 @Resource UserTransaction utx; NotSupported, Required Supports RequiresNew Mandatory Never 2 3 4 try { utx.begin(); utx.commit(); catch (Exception e1) { try { utx.rollback(); catch (Exception e2) { Podsumowanie Technologia EJB umożliwia implementację logiki biznesowej w aplikacjach Java EE Komponenty EJB są uruchamiane w kontenerze EJB Dwa typy komponentów: sesyjne i komunikatowe Zalety EJB: skalowalność aplikacji wsparcie dla różnych typów klientów silne wsparcie dla transakcji Materiały dodatkowe The Java EE 5 Tutorial, http://java.sun.com/javaee/5/docs/tutorial/doc/