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



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

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Enterprise JavaBeans

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

EJB 3.0 (Enterprise JavaBeans 3.0)

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

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

Enterprise JavaBeans (EJB)

Programowanie komponentowe 5

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

Enterprise JavaBean 3.0

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

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

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

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Podstawowe informacje o technologii Java EE 7

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

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

1 Wprowadzenie do J2EE

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

Enterprise Java Beans Narzędzia i Aplikacje Java EE

mgr inż. Michał Paluch

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

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

Java Persistence API - zagadnienia zaawansowane

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

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

Zaawansowane aplikacje internetowe

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Aplikacje internetowe i rozproszone - laboratorium

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Enterprise JavaBeans 3.0

Stanowe komponenty sesyjne

Wprowadzenie do Enterprise JavaBeans 2.0

Komponenty sterowane komunikatami

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

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

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

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.

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Java Server Faces narzędzie do implementacji w wy prezentacji

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

Enterprise JavaBeans (EJB)

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

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.

Zastosowanie komponentów EJB typu Session

Wzorce logiki dziedziny

Podstawy frameworka Spring

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

Tomasz Dobek.

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Wybrane działy Informatyki Stosowanej

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

Wybrane działy Informatyki Stosowanej

Usługa TimerService

Enterprise Java Beans wykład 7 i 8

Kurs programowania aplikacji bazodanowych

Java EE: JSF + EJB + JPA

Programowanie komponentowe

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

ORM w Javie. Adam Michalik 2007

Pico. Wstęp do kontenerów IoC.

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Aplikacje w środowisku Java

JBoss: MetaMatrix, Mobicents, Seam, Rools, ESB

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

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Szkolenie wycofane z oferty

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Programowanie Obiektowe Ćwiczenie 4

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

Nowoczesne aplikacje internetowe oparte o JEE7 (JSF2.2, EJB3.2, JPA2.1, CDI1.1, AJAX)

Złożone komponenty JSF wg

Java wybrane technologie

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Programowanie obiektowe

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Java wybrane technologie

SOP System Obsługi Parkingów

Dostęp do baz danych z aplikacji J2EE

Dostęp do baz danych w aplikacjach Java EE

J2EE Project TEMATY PROJEKTÓW PRZEMYSŁAW SOŁTAN. (0.2 build )

Co nowego w Java EE?

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

POSTANOWIENIE. z dnia 20 sierpnia 2018 roku

Budowa komponentów Enterprise JavaBeans

Transkrypt:

EJB 3.0 & JBoss Seam 25 kwietnia 2007 Jacek Gerbszt 1

Wyzwania współczesnych aplikacji? Rozproszenie, zdalne wywołania Przetwarzanie transakcyjne Bezpieczeństwo Skalowalność Klastrowanie Łatwe wytwarzanie i rozwój 25 kwietnia 2007 Jacek Gerbszt 2

Co to jest EJB? Enterprise Java Beans Służy do tworzenia rozproszonych aplikacji zorientowanych obiektowo. Framework udostępniający usługi, pozwalający developerowi skupić się na pisaniu logiki biznesowej. Jest częścią Java EE 25 kwietnia 2007 Jacek Gerbszt 3

EJB w architekturze Java EE 25 kwietnia 2007 Jacek Gerbszt 4

Typy komponentów EJB Session Bean Stateless Session Bean (SSB) Stateful Session Bean (SFSB) Message-Driven Bean (MDB) Entity (JPA) 25 kwietnia 2007 Jacek Gerbszt 5

SSB & SFSB Reprezentuje akcję pojedynczego klienta po stronie serwera. @Stateless & @Stateful Nie jest wywoływany współbieżnie SFB przechowuje stan pomiędzy zapytaniami 25 kwietnia 2007 Jacek Gerbszt 6

EJB - HelloWorld import javax.ejb.stateless; @Remote public interface HelloWorld { String sayhello(string name); } @Stateless public class HelloWorldBean implements HelloWorld { public String sayhello(string name) { return "Hello "+name+"!"; } } Spakować do pliku o rozerzeniu.ejb3 Wrzucić do katalogu deploy jbossa Gotowe. Tylko tyle! 25 kwietnia 2007 Jacek Gerbszt 7

EJB HelloWorld klient import org.junit.test; public class HelloWorldTest { } @Test public void sayhellocall() throws NamingException { ; } HelloWorld hello = (HelloWorld)(new InitialContext()).lookup( HelloWorldBean/local ) hello.sayhello( Jacek ); 25 kwietnia 2007 Jacek Gerbszt 8

Inversion of Control Inversion of Control/Dependency Injection Skąd wziąć referencje do potrzebnych nam zasobów: instancji innych komponentów EJB źródeł danych (DataSource), itp. itd. Dwie możliwości wzorzec Service Locator, np. wyszukiwanie przez JNDI: Context.lookup("nazwa") IoC/DI Komponent deklaruje jakie zasoby są mu potrzebne, a dostarcza je kontener. 25 kwietnia 2007 Jacek Gerbszt 9

Message-Driven Bean Przetwarza zapytania asynchronicznie Funkcjonuje jako JMS listener Zapytanie w postaci komunikatu może być wysłane przez dowolny komponent Java EE: klienta, innego beana, servlet lub dowolną inną aplikację korzystającą z JMS. Nie zachowuje stanu pomiędzy wywołaniami 25 kwietnia 2007 Jacek Gerbszt 10

Message Driven Bean 25 kwietnia 2007 Jacek Gerbszt 11

Entity Reprezentuje obiekt biznesowy przechowywany w bazie danych lub utrwalony innym mechanizmem @Entity Zwykle obiekt Entity odpowiada rekordowi tabeli z relacyjnej bazy danych 25 kwietnia 2007 Jacek Gerbszt 12

Encje Java Persistence API (JPA) Język zapytań Adnotacje mapowania obiektoworelacyjnego. 25 kwietnia 2007 Jacek Gerbszt 13

Encja: przykład @Entity @Table(name= Kontakt ) public class Contact { @Id @GeneratedValue private int id; private String name; private String phone; public int getid() { return id; } public void setid(int id) { this.id = id; } @Column(name= nazwa ) public String getname() { return name; } public void setname(string name) { this.name = name; } } public String getphone() { return phone; } public void setphone(string phone) { this.phone=phone; } 25 kwietnia 2007 Jacek Gerbszt 14

Związki pomiędzy encjami @Entity @Table(name= Kontakt ) public class Contact { @OneToMany(mappedBy="contact", cascade=cascadetype.remove) @OrderBy("created") private List<Comment> comments = new ArrayList<Comment>(); } @Entity @Table(name= Komentarz ) public class Comment { @ManyToOne private Contact contact; } 25 kwietnia 2007 Jacek Gerbszt 15

Praca z encjami (CRUD) EntityManager em; //dodaj kontakt Contact n = new Contact("Jacek Gerbszt", 500333222"); em.persist(n); //zmień adres n.setaddress("traugutta 115C"); em.merge(n); em.flush(); //opcjonalnie //szukaj kontaktu o id = 123 Notatka n = em.find(notatka.class, 123); //usuń kontakt em.remove(n); 25 kwietnia 2007 Jacek Gerbszt 16

EJBQL Dynamiczne zapytania: EntityManager.createQuery() EntityManager.createNativeQuery() Zapytania zdefiniowane: EntityManager.createNamedQuery() EJBQL praktycznie pełna funkcjonalność SQLa: group by, having, wewnętrzne i zewnętrzne złączenia, podzapytania, update, delete rzutowanie zapytania na dowolny typ 25 kwietnia 2007 Jacek Gerbszt 17

EJBQL, przykłady Query q = em.createquery( "select from Contact n where n.name = :name"); q.setparameter( name", "Jacek Gerbszt"); List<Contact> cncts = q.getresultlist(); Query del = em.createquery("delete from Contact c where c.name = :name"); del.setparameter("name", "Jacek Gerbszt"); del.executeupdate(); 25 kwietnia 2007 Jacek Gerbszt 18

Dziedziczenie Encje mogą dziedziczyć po sobie hierarchia dziedziczenia jest automatycznie odwzorowana w bazie danych zapytania EJBQL mogą być polimorficzne 25 kwietnia 2007 Jacek Gerbszt 19

Strategie dziedziczenia SINGLE_TABLE jedna tabele z polem (discriminator), które określa klasę konkretną (wymagane przez EJB 3.0 spec.) JOINED tabela złączona z bazową na każdą klasę dziedziczącą TABLE_PER_CLASS oddzielna tabela dla każdej klasy dziedziczącej 25 kwietnia 2007 Jacek Gerbszt 20

Transakcje ACID: Atomicy Consistency Isolation durability 25 kwietnia 2007 Jacek Gerbszt 21

Model transakcyjny EJB Model płaski Two-phase commit protocol Transakcje rozproszone Container-Managed Transactions Bean-Managed Transactions 25 kwietnia 2007 Jacek Gerbszt 22

Atrybuty transakcji Required jeśli nie ma, zostanie utworzona RequiresNew zawsze nowa Supports nie wymagana Mandatory wymagana NotSupported jeśli jest, zostanie wstrzymana Never wyjątek, gdy transakcja 25 kwietnia 2007 Jacek Gerbszt 23

Transakcje: przykład @Stateful public class CartBean implements Cart { @TransactionAttribute(TransactionAttributeType.REQUIRES _NEW) public void commit() { //... } 25 kwietnia 2007 Jacek Gerbszt 24

Podsumowanie EJB 3.0 Pozwala tworzyć model obiektowy łatwiejsze w przyswojeniu większa funkcjonalność (komponenty encyjne) szybsze tworzenie oprogramowania 25 kwietnia 2007 Jacek Gerbszt 25

Współpraca JSF i EJB 3.0 JSF JSF JavaBean JSF JavaBean JSF JavaBean EJB 3.0 Java EE 5 25 kwietnia 2007 Jacek Gerbszt 26

Współpraca JSF i EJB 3.0 Typowy model współpracy: Komponent JSF JavaBean (managed bean) wywołuje metody komponentu EJB i wykonuje operacje bazodanowe przy pomocy JPA Po co JSF JavaBean, skoro mamy już EJB? Jak zrealizować optymalnie sesję klienta? Sesja HTTP? Stateful Session Bean? Jak zrealizować długie transakcje? 25 kwietnia 2007 Jacek Gerbszt 27

JBoss Seam JSF JBoss Seam EJB 3.0 Java EE 5 25 kwietnia 2007 Jacek Gerbszt 28

JBoss Seam cel powstania Integracja JSF z EJB 3.0 Integracja AJAX-a (ICEFaces i Ajax4JSF) Wsparcie dla BPM (jbpm) Deklaratywne zarządzanie stanem aplikacji Bijection Zarządzanie workspace-ami Powszechne użycie adnotacji do konfiguracji 25 kwietnia 2007 Jacek Gerbszt 29

JBoss Seam JSP Facelets Portal JSF JBoss Seam EJB 3.0 JBoss jbpm Hibernate Java EE 5 25 kwietnia 2007 Jacek Gerbszt 30

Seam przykład lista kontaktów 25 kwietnia 2007 Jacek Gerbszt 31

Konteksty JBoss Seam umożliwia umieszczanie obiektów w kontekstach Standardowe: bezstanowy, strony, sesji, zapytania, aplikacji Niestandardowe: konwersacji i procesu biznesowego Najbardziej interesujący jest kontekst konwersacyjny 25 kwietnia 2007 Jacek Gerbszt 32

Konwersacje Konwersacja sekwencja wielu zapytań klienta realizująca jakieś zadanie Implementacje bez Seama: Po każdym zapytaniu odtwarzany jest stan zapisany w bazie danych; problemy z wydajnością i skalowaniem Stan zapisywany jest w HttpSession; trudne w implementacji. Seam wprowadza dodatkowy kontekst i dba, żeby konwersacje były od siebie dobrze odizolowane 25 kwietnia 2007 Jacek Gerbszt 33

Bijection Dependency bijection: injection + outjection Pozwala na wymianę obiektów pomiędzy prezentacją i komponentami JSF w obie strony. 25 kwietnia 2007 Jacek Gerbszt 34

SFSB Seam przywrócił do życia Stateful Session Beany Wydajne okazuje się często przechowywanie stanu aplikacji nie w sesji HTTP, ani w bazie danych, ale w SFSB 25 kwietnia 2007 Jacek Gerbszt 35

Typowe problemy Seam adresuje wiele typowych problemów aplikacji WWW: Praca w wielu zakładkach przeglądarki Przycisk Wstecz Ręczne wpisywanie adresu Zmiana wielkości okna Itd. 25 kwietnia 2007 Jacek Gerbszt 36

Wiele udogodnień Klastrowanie nie tylko EJB, ale też zwykłych POJO Ułatwiona obsługa cache-a (np. keszowanie wyrenderowanych stron JSF) Scaffolding, czyli generowanie szkieletu aplikacji (podobnie jak w Ruby on Rails) Użycie walidatorów JPA do walidacji w JSF Deklaratywna autoryzacja i autentykacja Wsparcie dla skórek 25 kwietnia 2007 Jacek Gerbszt 37

Środowisko dla Seama Może współpracować z każdym serwerem Java EE 5 (JBoss 4.0.5, GlassFish) Działa również na Tomcacie zamiast EJB używamy zwykłych klas Java, lub zagnieżdżonego jądra JBossa. Może współpracować z dowolną biblioteką komponentów JSF: Facelets, Ajax4JSF, RichFaces, ICEFaces, itd. 25 kwietnia 2007 Jacek Gerbszt 38

Dlaczego Seam? Najszybszy sposób na użycie AJAXa Bardzo prosty start z EJB 3.0 Ułatwia wykorzystanie JSF Integruje BPM Ułatwia zautomatyzowane testy integracyjne Bazuje na otwartych standardach Sam też ma szansę wejść do standardu Java EE (JSR 299) 25 kwietnia 2007 Jacek Gerbszt 39 JG2

Slajd 39 JG2 Jacek Gerbszt; 2007-04-23

Dalsze informacje http://java.sun.com/javaee/5/docs/tutorial/doc/ http://labs.jboss.com/portal/jbossseam/docs Wiele blogów i artykułów w sieci. 25 kwietnia 2007 Jacek Gerbszt 40