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

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

Programowanie komponentowe 5

Zastosowanie komponentów EJB typu Session

Enterprise JavaBeans

Enterprise JavaBeans (EJB)

Enterprise JavaBeans (EJB)

Podstawowe informacje o technologii Java EE 7

EJB 3.0 (Enterprise JavaBeans 3.0)

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

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

Aplikacje internetowe i rozproszone - laboratorium

Java EE: JSF + EJB + JPA + CDI + BV

Złożone komponenty JSF wg

Zaawansowane aplikacje internetowe

Usługa TimerService

Złożone komponenty JSF wg

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

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Kontenery IoC dla Java Guice 3.0

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Web frameworks do budowy aplikacji zgodnych z J2EE

Stanowe komponenty sesyjne

1 Wprowadzenie do J2EE

Wywoływanie metod zdalnych

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

Aplikacje RMI

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

Zagadnienia Programowania Obiektowego Agata Hejmej

JBoss Seam: framework nowej generacji. Copyright Piotr Kochański & Erudis,

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

mgr inż. Michał Paluch

Remote Method Invocation 17 listopada 2010

Szkolenie wycofane z oferty

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

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

Serwery aplikacji. dr Radosław Matusik. radmat

Podejście obiektowe do budowy systemów rozproszonych

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wywoływanie metod zdalnych

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Tomasz Dobek.

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

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.

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Wybrane działy Informatyki Stosowanej

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Wprowadzenie do Enterprise JavaBeans 2.0

Co nowego w Java EE?

Co nowego w Java EE?

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wybrane działy Informatyki Stosowanej

Zastosowanie słuchaczy zdarzeń wg

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

JAX-RS czyli REST w Javie. Adam Kędziora

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

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

Zagadnienia projektowania aplikacji J2EE

Java EE: JSF + EJB + JPA

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Java Server Faces narzędzie do implementacji w wy prezentacji

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

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Nowoczesne aplikacje internetowe oparte na JEE6 (JSF2, EJB3.1, JPA2, CDI, AJAX)

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

Wykład 1 Inżynieria Oprogramowania

Zaawansowane Aplikacje Internetowe

Serwery aplikacji. dr Radosław Matusik. radmat

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Projekt INP Instrukcja 1. Autor Dr inż. Zofia Kruczkiewicz

Forum Client - Spring in Swing

Enterprise JavaBean 3.0

Enterprise Java Beans wykład 7 i 8

Klasy abstrakcyjne i interfejsy

Aplikacje RMI Lab4

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wykład 7: Pakiety i Interfejsy

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Aplikacje w środowisku Java

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Warszawa JUG. Struts 2 rusztowanie dla Łebu

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Transkrypt:

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

ASP.NET (2) Contexts and Dependency Injection (CDI) Specyfikacja składowa Java EE 6 dotycząca współpracy warstwy prezentacji z warstwą usług biznesowych (transakcyjnych) integruje JSF z EJB początkowo rozwijana pod nazwą Web Beans bazuje na specyfikacjach Managed Beans i Dependency Injection for Java zainspirowana frameworkami Seam, Guice i Spring Dwie myśli przewodnie: konteksty wstrzykiwanie zależności Implementacja referencyjna: Weld (JBoss)

Usługi oferowane przez CDI Wiązanie cyklu życia komponentów stanowych z ściśle zdefiniowanymi kontekstami Wstrzykiwanie komponentów do aplikacji z kontrolą zgodności typów Integracja z językiem wyrażeń (EL) umożliwiająca bezpośrednie użycie komponentów na stronach JSF i JSP Możliwość interakcji między obiektami w oparciu o model powiadamiania o zdarzeniach Interceptory i dekoratory ( bardziej świadome interceptory ) Charakterystyka modelu programistycznego CDI: loose coupling with strong typing ASP.NET (3)

ASP.NET (4) Beans w CDI CDI rozszerza koncepcję beans znaną z JavaBeans i EJB Bean = obiekt przywiązany do kontekstu cyklu życia CDI w pełni obsługuje sesyjne EJB i managed beans wstrzykiwanie sesyjnych EJB i managed beans do innych sesyjnych EJB i managed beans CDI umożliwia również wstrzykiwanie do komponentów, które same nie są beans w sensie CDI: komunikatowe EJB interceptory serwlety, filtry serwletów punkty końcowe usług JAX-WS (web services) handlery znaczników JSP

ASP.NET (5) Anatomia beana Niepusty zbiór typów beana (bean types) bean type = klasa/interfejs widziana przez klienta np. lokalny interfejs EJB (zdalny nie może być!) Niepusty zbiór kwalifikatorów (qualifiers) umożliwiają rozróżnienie implementacji typu bez uciekania się do tekstowych nazw domyślnie @Default Zasięg Opcjonalna nazwa EL Zbiór wiązań interceptorów Implementacja beana

ASP.NET (6) Przykłady beanów i ich typów Zwykła klasa Java public class Basket extends Container implements Convertible { Sesyjny EJB @Stateful public class BookShopBean implements BookShop {... Bean types: - BookShop (@Local) - java.lang.object Bean types: - Basket - Container - Convertible - java.lang.object

ASP.NET (7) Wstrzykiwanie beanów public class Greeting { public String greet(string name) { return "Hello, " + name + "."; Wstrzyknięcie beana do innego komponentu import javax.inject.inject; public class Printer { @Inject Greeting greeting;... Wstrzykiwanie w oparciu o typ Bean nie musi mieć nazwy! Bean

ASP.NET (8) Kwalifikatory (ang. qualifiers) Umożliwiają dostarczenie różnych implementacji danego typu beana Definiowane w formie adnotacji Java import static java.lang.annotation.elementtype.field; import static java.lang.annotation.elementtype.method; import static java.lang.annotation.elementtype.parameter; import static java.lang.annotation.elementtype.type; import static java.lang.annotation.retentionpolicy.runtime; import java.lang.annotation.retention; import java.lang.annotation.target; import javax.inject.qualifier; @Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER) public @interface Informal {

ASP.NET (9) Użycie kwalifikatora Klasa beana z kwalifikatorem @Informal public class InformalGreeting extends Greeting { public String greet(string name) { return "Hi, " + name + "!"; Domyślnie @Default Wstrzyknięcie wskazanej implementacji beana import javax.inject.inject; public class Printer { @Inject @Informal Greeting greeting;...

Zasięgi i konteksty Zasięg determinuje cykl życia instancji beana oraz to który klient korzysta z której instancji kiedy tworzona jest nowa instancja beana o danym zasięgu? kiedy istniejąca instancja beana o danym zasięgu jest niszczona? które wstrzyknięte referencje odwołują się do których instancji beana o danym zasięgu? CDI oferuje: 4 wbudowane zasięgi 2 wbudowane pseudo-zasięgi możliwość definiowania własnych zasięgów wymaga zdefiniowania kontekstu implementującego zasięg ASP.NET (10)

javax.enterprise.context ASP.NET (11) Wbudowane zasięgi CDI Zasięgi: @RequestScoped jak w JSF @SessionScoped jak w JSF @ApplicationScoped jak w JSF @ConversationScoped konwersacja o programowo określonym początku i końcu Pseudo-zasięgi: @Singleton jedna współdzielona instancja @Dependent domyślny zasięg, związanie z cyklem życia klienta javax.inject

ASP.NET (12) Zasięg konwersacji Wykorzystywany do realizacji określonego zadania ( unit of work ) Podobny do zasięgu sesji: obejmuje sekwencję odwołań do serwera nie może przekraczać granic sesji HTTP Różnice w stosunku do sesji: początek i koniec konwersacji określony jawnie przez aplikację stan związany z kartą (tab) w przeglądarce Aktywny podczas każdego żądania JSF domyślnie kończy się wraz z żądaniem aby obejmował sekwencję żądań musi być jawnie przekształcony w długotrwałą konwersację

ASP.NET (13) Długotrwałe konwersacje CDI oferuje wbudowany bean do sterowania cyklem życia konwersacji w aplikacji JSF można uzyskać do niego dostęp przez wstrzyknięcie @Inject Conversation conversation; promocja konwersacji związanej z bieżącym żądaniem do długotrwałej konwersacji (ang. long-running) conversation.begin(); zlecenie zniszczenia kontekstu bieżącej długotrwałej konwersacji wraz z końcem bieżącego żądania conversation.end();

ASP.NET (14) Nazwy EL beanów Umożliwiają bezpośrednie odwołania do beanów z poziomu kodu strony jawne nadanie nazwy @Named("cart") @SessionScoped Public class ShoppingCart implements Serializable {... nadanie nazwy domyślnej (nazwa klasy z małej litery) @Named @SessionScoped Public class ShoppingCart implements Serializable {... odwołanie do beana na stronie <h:outputtext value="#{cart.total"/>

ASP.NET (15) Konfiguracja aplikacji CDI W module zawierającym beany wymagany plik beans.xml ze względu na ogólność wymagań stawianym beanom przez CDI, dostarczono mechanizm wskazywania, które archiwa zawierają beany Zawartość pliku beans.xml nie zawiera definicji beanów! może być pusty posiada zawartość gdy wykorzystywane są: interceptory, dekoratory, alternatywy Lokalizacja pliku beans.xml META-INF/beans.xml w module EJB WEB-INF/beans.xml w module webowym