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

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

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

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

EJB 3.0 (Enterprise JavaBeans 3.0)

MIGRACJA SYSTEMÓW INFORMATYCZNYCH DO TECHNOLOGII JAVA

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

Web frameworks do budowy aplikacji zgodnych z J2EE

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

Szkolenie wycofane z oferty

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Programowanie komponentowe 5

Wybrane działy Informatyki Stosowanej

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

Enterprise JavaBeans (EJB)

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

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

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Wybrane działy Informatyki Stosowanej

Forum Client - Spring in Swing

Enterprise JavaBeans

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

SZKOLENIE TWORZENIE SYSTEMÓW

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

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

JBoss: MetaMatrix, Mobicents, Seam, Rools, ESB

Enterprise Java Beans wykład 7 i 8

SOP System Obsługi Parkingów

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Java Server Faces narzędzie do implementacji w wy prezentacji

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

Nowoczesne aplikacje internetowe oparte na Spring Framework, JSF, JPA i AJAX

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

1 Wprowadzenie do J2EE

edziennik Ustaw Opis architektury

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

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Enterprise JavaBean 3.0

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

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

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

Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML

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

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Java Persistence API - zagadnienia zaawansowane

Programowanie Komponentowe WebAPI

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

JavaServer Faces (JSF)

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

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Podstawowe informacje o technologii Java EE 7

Zaawansowane Aplikacje Internetowe

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

Wykład 1 Inżynieria Oprogramowania

Zaawansowane Aplikacje Internetowe

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

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

Założenia projektowe dla zapytania ofertowego EAK_ZA_01/2015

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

Program szkolenia: REST i Microservices w PHP

Złożone komponenty JSF wg

Java EE: JSF + EJB + JPA

Zaawansowane aplikacje internetowe. Projektowanie. wykład prowadzi Mikołaj Morzy. Projektowanie

mgr inż. Michał Paluch

Aplikacje internetowe i rozproszone - laboratorium

Pico. Wstęp do kontenerów IoC.

CENNIK I TERMINARZ SZKOLEŃ SZKOLENIA OTWARTE DLA UŻYTKOWNIKÓW SYSTEMÓW INFORMATYCZNYCH

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

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

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

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

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

W grze bierze udział dwóch graczy. Każdy uczestnik rozpoczyna rozgrywkę z sumą

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

Zastosowanie komponentów EJB typu Session

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

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

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Podstawy frameworka Spring

Złożone komponenty JSF wg

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ

Modelowanie procesów biznesowych, przepływu pracy oraz reguł biznesowych na przykładzie Drools i jbpm lub Activiti

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

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

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

OfficeObjects e-forms

Enterprise JavaBeans 3.0

Zaawansowane Techniki Bazodanowe

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

SOA Web Services in Java

OpenLaszlo. OpenLaszlo

Transkrypt:

JBoss Seam: framework nowej generacji

Wstęp

Agenda Wstęp Elementy JBoss Seam: JSF + EJB3 +...... brakujące ogniwo Możliwości JBoss Seam Przykład zastosowania uproszczenie aplikacji konteksty, konwersacje Generowanie aplikacji (EJB3 on Rails) Projektowanie procesów (biznesowych)

Co jest wyjątkowego w JBoss Seam Frameworków jest wiele, ale nie są standardem (w sensie Java EE) często ignorują część standardu Java EE JBoss Seam opiera się w możliwie dużym stopniu o standardowe technologie Java EE Rozwiązuje napotykane problemy: tworzenia architektury aplikacji związane z charakterystyką aplikacji WWW drobniejsze, czysto praktyczne (np. linki do stron) Prawdopodobnie rozwiązanie zbliżone do JBoss Seam stanie się standardem: JSR 299 (WebBeans)

Java Server Faces Komponentowa technologia tworzenia dynamicznych stron WWW Co dostajemy? szkielet aplikacji oparty o wzorzec Model-Widok- Kontroler (MVC). (JSF = Widok + Kontroler) możliwość tworzenia kontrolek (podobnie jak dla GUI) sterowanie aplikacją oparte jest o obsługę zdarzeń konwersja typów i walidacja formularzy Spójny sposób konfiguracji aplikacji

JSF jak to działa?

JSF jak to działa, C.D. Gdy formularz jest wysłany, inicjalizowany jest obiekt komponentu JavaBean stowarzyszony z formularzem (pola formularz = pola klasy) w pliku konfiguracyjnym deklarujemy komponenty JavaBean Wykonywana jest metoda, która jest zdefiniowana jako akcja obsługi formularza Działanie aplikacji jest przekierowane zgodnie z wynikiem zwróconym przez akcję możliwe przekierowania definiujemy w pliku konfiguracyjnym

EJB 3 + JPA Komponenty EJB (Enterprise Java Beans) zarządzane, serwerowe komponenty do budowy rozproszonych aplikacji, realizujące ich logikę biznesową EJB dbają o transakcyjność, wielowątkowość, RMI, failover, bezpieczeństwo, klastrowanie... JPA (Java Persistence API) most relacyjno-obiektowy (podobny do TopLinka, Hibernate, Kodo, itp.) JPA integruje się z EJB (transakcyjność)

JSF + EJB3 + JPA Typowy model współdziałania: komponent JavaBean JSF (managed bean) wywołuje metody komponentu EJB i/lub wykonuje operacje bazodanowe przy pomocy JPA Pytania? Po co nam JSF JavaBean, jeśli mamy komponent EJB? Jak zrealizować optymalnie obsługę sesji klienta? Sesja HTTP, sesyjny komponent EJB? Jak zrealizować optymalnie poprawne zachowanie w przypadku nieatomowych modyfikacji bazy danych przez wielu klientów ( długie transakcje aplikacyjne)

JBoss Seam, co dostajemy Integracja JSF z EJB3. Poprawienie funkcjonalności JSF Rozwiązanie problemów długich transakcji aplikacyjnych; zarządzanie zasięgami obiektów. Ułatwienie tworzenia aplikacji wykorzystujących AJAX (Asynchronous JavaScript and XML) Możliwość wykorzystania POJO zamiast EJB Konfiguracja przez metadane (annotations) Generowanie szkieletu aplikacji (scaffolding) Wsparcie dla BPM (Bussines Proccess Management) Łatwiejsza konfiguracja nawigacji (pageflow)

JBoss Seam

Przykład Aplikacja JSF bez JBoss Seam Ta sama aplikacja, ale wykorzystująca JBoss Seam problem transakcji aplikacyjnych Jeszcze raz ta sama aplikacja, ale wykorzystująca konwersacje Seam

Aplikacja JSF + EJB bez Seam

Aplikacja JSF + EJB3 wykorzystująca JBoss Seam

Aplikacja JSF + EJB3 wykorzystująca konwersacje Seam @Name("user") @Scope(ScopeType.CONVERSATION) public class User { //... } @Stateless @Name("register") public class RegisterActionBean { @In User user; @Begin public String confirm() {...} @End public String register() {...}

Konteksty i konwersacje JBoss Seam umożliwia umieszczanie obiektów w różnego rodzaju kontekstach (zasięgach) standardowych: bezstanowym, strony, sesji, żądania, aplikacji niestandardowych: konwersacyjnym i kontekście procesu biznesowego Nas interesuje zasięg konwersacyjny

Konwersacje (atomowe) Konwersacja: sekwencja (wielu) żądań klienta realizująca jakieś zadanie Konwersacje na surowo, dwie typowe metody: (a) po każdym żądaniu odtwarzamy stan aplikacji z bazy danych (b) zapisujemy stan aplikacji w sesji (a) prowadzi często do braku skalowalności i problemów wydajnościowych rozwiązanie (b) jest trudne do oprogramowania JBoss Seam sam dba o to, żeby konwersacje (jednoczesne!) nie zakłócały się (atomowość)

Obiekty zarządzane przez Seam Dependency bijection: injection + outjection

Jak działa magia? Dwa elementy Sesyjne stanowe komponenty EJB pogłoski o ich śmierci są mocno przesadzone to nieprawda, że stanowe EJB są niewydajne, źle się klastrują JPA Extended Persistence Context obiekty reprezentujące dane z bazy danych (encje JPA) są z nią złączone przez cały czas życia sesji......ale w taki sposób, że nie musi być otwarta cały czas transakcja, a mimo to nie tracimy izolacji transakcji

Niezawodność aplikacji Każdy typ aplikacji ma swoje miękkie punkty aplikacje GUI: np. poprawne zachowanie wielowątkowe, reakcja na zmianę wielkości okna aplikacje WWW: zakłócenie przewidywanego toku działania, np.: otwieranie nowych okien, przycisk Wstecz przeglądarki, ręczne wpisywanie adresu... JBoss Seam automatycznie pozwala uwzględnić wiele typowych problemów aplikacji WWW

JBoss Seam + AJAX JBoss Seam jest idealnym rozwiązaniem dla aplikacji AJAX, dlaczego? AJAX = bardzo dużo drobnych żądań, co przekłada się na wiele zapytań do bazy danych W praktyce stan aplikacji musi być przechowywany wydajniej, co robi za nas Seam: cache W aplikacjach AJAX tym bardziej występują problemy transakcji aplikacyjnych i ich izolacji Dygresja: do bardziej złożonych aplikacji AJAX jest złym technicznie rozwiązaniem: warto porównać AJAX-owe edytory tekstu/arkusze kalkulacyjne z ThinkFree, który jest apletem Java

Więcej... Klastrowanie nie tylko na poziomie EJB, ale także zwykłych POJO Schowek (cache) JBoss Seam (obiektów i stron JSF) Scaffolding, czyli generowanie szkieletu aplikacji (jak Ruby on Rails) przy pomocy seam-gen (dla Eclipse i NetBeans) Walidacja może być zawarta w kodzie Java, a nie na stronie JSF Autoryzacja oparta o role i uprawnienia Tworzenie logu aplikacji (@Logger) Wsparcie dla skórek (np. wersja do druku, wersja dla niedowidzących)

JBoss Seam a reszta Świata?

JBoss Seam a reszta Świata, C.D. Zaleta JBoss Seam: wykorzystanie standardów Java EE i minimalna ingerencja w aplikację Ale są inne rozwiązania (szkielety aplikacji) najpopularniejsze: Spring Framework WebWork2/Struts, Tapestry, OpenLaszlo,... Od wersji 1.2 Seam integruje się ze Spring-iem możliwość użycia Dependency Injection w obie strony: komponent Seam > Spring JavaBean i na odwrót Spring JavaBean może być umieszczany w kontekście JBoss Seam

Wyższy poziom abstrakcji Projektowanie nawigacji między stronami poprzez jpdl (pageflow definition) przy złożonych przebiegach działania aplikacji jpdl jest łatwiejszy w ogarnięciu niż standardowa nawigacja JSF Tworzenie aplikacji poprzez definicję jbpm (Bussines Process Mangament) definiujemy proces w pliku konfiguracyjnym w kodzie umieszczamy przy pomocy metadanych uchwyty do elementów procesu

Uwagi Seam może współpracować z każdym serwerem aplikacji Java EE 5.0: JBoss 4.0.5 (prawie JEE 5), GlassFish Seam działa także na serwerze WWW Tomcat: zamiast komponentów EJB używamy zwykłych klas Java Seam może współpracować z dowolną biblioteką komponentów JSF: w szczególności z Facelets, ajax4jsf, RichFaces, ICEfaces Seam nadaje się nie tylko do aplikacji WWW, w ramach Seam możemy swobodnie używać wszystkich możliwości EJB

Źródła wiedzy Tutorial JBoss Seam http://labs.jboss.com/jbossseam/docs Przykładowe case study: http://blogs.nuxeo.com/sections/blogs/eric_barroca/2006_ 11_23_nuxeo-s-presentation-jboss-world-berlin-2006 Blog Briana Leonarda (Seam + NetBeans + GlassFish) http://weblogs.java.net/blog/bleonard/archive/2006/05/tr ying_out_jbos_2.html Artykuł na ONJava http://www.onjava.com/lpt/a/6512 Wstęp do JBoss Seam (fragment książki) http://www.infoq.com/articles/jboss-seam

Podsumowanie JBoss Seam nowa jakość oparcie się o standardy konwersacje, cache, klastrowanie rozwiązanie wielu problemów jakie dostarcza tworzenie aplikacji WWW Prezentacja + przykładowe projekty: http://www.erudis.pl/sc/seam Kontakt: p.kochanski@erudis.pl