VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 4.

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Úvod do platformy Java EE
Ing. Jan Mittner MySQL Workbench 2. Základy práce s databází 3. Subversion 2.
FG Forrest, a.s. Jan Novotný iBatis SqlMaps.
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Ing. Jan Mittner Rozšíření modelu 2. Vazba 1:n 3. Vazba m:n 2.
Přednáška č. 5 Proces návrhu databáze
Operační systémy. OPERAČNÍ SYSTÉMY pomoc operátorovi, podpora vlastností reálného času, víceuživatelských a více úlohových systémů.
C# pro začátečníky Mgr. Jaromír Osčádal
Návrh architektury moderních informačních systémů
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Databáze Jiří Kalousek.
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Petr Šetka, MVP Exchange, MCSE:Messaging, MCT Windows Small Business Server 2003 R2.
Vývoj aplikací pro SharePoint
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
Protokol TCP/IP a OSI model
Objektové programování
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Databázové systémy Architektury DBS.
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Informatika pro ekonomy II přednáška 10
Počítače a programování 1
B. Miniberger, BIVŠ Praha 2009
Dokumentace objektů a zveřejnění funkcí
Představujeme Ensemble Michal Tomek. Na tomto obrázku vidíte, co systému Ensemble chybí:
Ing. Jan Mittner Životní cyklus požadavku 2. Moduly 3. Pluginy 4. Jak řešit komponenty typu menu 5. atd. 2.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 13.
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Seznam.cz, a.s. I Radlická 2 I Praha 5 I Tel.: I Fax: FastRPC meziserverová.
Šesté cvičení Výjimky Balíky.
Modelování a řízení podnikových procesů Dílna Ensemble I.
Správní a dopravně správní evidence - IISSDE RNDr. Jiří Malátek Zástupce ředitele OIVS MV
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Přístup do IS z mobilních zařízení Tomáš Tureček Katedra Informatiky FEI VŠB-TU Ostrava.
Webové služby pro komunikaci s informačním systémem eQuip Martin Širajch.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Zbyněk Šlajchrt Část 6.
PA165: Úvod do Java EE Petr Adámek.
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Zbyněk Šlajchrt 1 Část 12.
Web services. Co jsou webservices Součinná spolupráce počítačů v síti Technologie pro vzdálené volání procedur (RPC) Nezávislá na platformě Data v XML.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Zbyněk Šlajchrt Část 7.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 3.
MASSIV Middleware pro tvorbu online her. Obsah prezentace Úvod Prostřeky poskytované Massivem Využití jádra Massivu v Demu Zhodnocení projektu Prezentace.
Vývoj informačních systémů Námět na praktické cvičení Klient – Server (nepovinné)
Technologie Enterprise Java Beans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /
B2B Systémová integrace Jiří Macháček. Osnova ► Úvod ► Terminologie ► Parametry – požadavky ► Způsoby integrace ► Web-Services ► Příklady.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 10.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Zbyněk Šlajchrt Část 5.
Web services – když si Java sedne s M$ na kus řeči Ing. Petr Přibyl CCA Group a.s.
Optimistic and pessimistic offline lock. Naivní přístup:  Uživatel A načte data  Uživatel B načte (stejná) data  Uživatel A upraví data a uloží je.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY MVC vs MVP.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
INTEGRACE řešení základních registrů
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ
Zkušenosti s nasazením J2EE aplikací na AS GlassFish
Návrhový vzor Flyweight
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ
Informatika pro ekonomy přednáška 8
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA
Web Application Scanning
Unit of Work vzor z P of EAA (Fowler) 1.
Monitor Object 1.
Transkript prezentace:

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 4.

Vrstvy aplikace a jejich vymezení Prezentační vrstva "Jak aplikace vypadá" Prezentační vrstva "Jak aplikace vypadá" Business vrstva "Co aplikace dělá" Business vrstva "Co aplikace dělá" Perzistentní vrstva "Co aplikace je" Perzistentní vrstva "Co aplikace je" Servlety JSP Filtry Bezstavové EJB Beans Stavové EJB Beany Message Driven Beany JPA Entity JMS Fronty JMS Topiky

Enterprise Java Beans  Modelují aplikační logiku  operace nad entitami z perzistentní vrstvy  interakce s webovými službami  odesílání asynchronních zpráv jiným systémům  generování výstupních sestav  Transakční zpracování  demarkace začátku a konce transakce  důvod: zajištění konzistence dat  Bezpečnost  k operacím lze přiřadit role

Typy EJB  Bezstavové (stateless session beans)  mezi voláními neuchovávají stav pro klienta  Stavové (stateful session beans)  uchovávají stav konverzace mezi aplikací a klientem  Jedináček (singleton) – od verze Java EE 6  slouží ke sdílení dat mezi klienty a komponentami  Řízené zprávami (message-driven, MDB)  nevolají se přímo  jsou vyvolány kontejnerem při příchodu zprávy

EJB kontejner  Prostředí, do kterého se nasazují EJB komponenty  Má na starosti především tyto úkoly  Komunikace se vzdáleným klientem Zjednodušuje komunikaci mezi klientem a aplikací  Dependency injection JMS destinace, datové zdroje, EJB, proměnné prostředí ad.  State management Stavové beany udržují vzdálený stav klienta Klientovi se to jeví, jakoby byl stav uložen lokálně - transparentnost

EJB kontejner  Další úkoly  Pooling Pro bezstavové a MDB beany vytváří pool instancí - sdílení Každá instance řeší právě jeden požadavek  Životní cyklus komponent Stará se o vytváření, inicializaci, destrukci a další události  Messaging Umožňuje MDB poslouchat na JMS destinacích a konzumovat zprávy Odstiňuje programátora od komplikovaného JMS

EJB kontejner  Další úkoly  Management transakcí Beany deklarují transakční vlastnosti metod Kontejner řeší commit a rollback  Bezpečnost Deklarace přístupů na úrovní tříd a metod  Podpora souběžného zpracování požadavků Vývojář se nemusí starat o problémy se souběžností Výjimkou singleton, kde je zapotřebí jistá deklarace

EJB kontejner  Další úkoly  Správa interceptorů Komponenty, které mohou odchytávat okamžik před a po volání metody. Lze je definovat napříč aplikací  Asynchronní volání metod Od EJB 3.1 je možné volat metody asynchronně Lze se tak vyhnout použití JMS

Embedded container  Možnost spouštět EJB aplikace v prostředí Java SE  Usnadňuje testování a ladění aplikací  Podporuje pouze podmnožinu EJB Lite  Bez MDB, vzdálených rozhraní, WS, Timer...  může být omezující

Embedded Container - ukázka Pro Glassfish v3 viz:

Rozhraní  Lokální rozhraní  Definuje metody, které mohou volat jiné beany ve stejném kontejneru (tj. JVM)  Beany mohou komunikovat přímo, nikoliv přes distribuovaný objektový protokol (např. IIOP)  Je  Vzdálené rozhraní  Definuje metody, které mohou být volány z okolí kontejneru  Komunikace probíhá v distr. objektovém protokolu  Je

Rozhraní  Endpoint rozhraní  Definuje metody, které mohou být volány pomocí SOAP protokolu  Je  Message rozhraní  Implementováno Message-driven beany  Voláno JMS nebo jiným MOM  Typ rozhraní závisí na MOM  Pro JMS je to javax.jms.MessageListener

Rozhraní beanu - příklad

Třída session beanu  Podle typu musí být anotována  Musí mít aspoň jedno rozhraní: lokální, vzdálené nebo endpoint.  'Mít' znamená  klasickou implementaci v Javě (implements)  pomocí anotací na  Je možné mít více rozhraní stejného typu

Bezstavové session beany  Provádějí jednorázové operace  často zapouzdřují nějakou proceduru  ta musí obvykle proběhnout atomicky provede se celá – změny se projeví v datech zhavaruje – jakoby se nikdy neprováděla  Jedna instance může obsluhovat více klientů  je k dispozici všem klientům  obvykle existuje více instancí, které jsou uloženy v tzv. poolu  analogie s poolem vláken (thread pool)

Bezstavový bean - příklad

Volání beanu z klientské aplikace Syntaxe globálního jména: java:global/ / / !

Volání beanu z jiných komponent Dependency injection nabízí velmi pohodlné získání reference Lze ale použít i vyhledání v JNDI pomocí lookup

Přístup k proměnným prostředí  EJB kontejner vlastní registr konfiguračních parametrů a odkazů na externí služby  Enterprise Naming Context (ENC)  Inicializuje se  z v ENC vznikne položka odkazující na externí prostředek  z EJB XML META-INF/ejb-jar.xml deployment deskriptor EJB modulu

Příklad: Konfigurační parametr

Příklad – Konfigurace v ejb-jar.xml

SessionContext  Poskytuje pohled do EJB kontejneru  Beany pomocí něj volají různé služby kontejneru  Reference se získává injektáží do atributu beanu SessionContext ctx;  getCallerPrincipal()  vrací aktuálního uživatele  getBusinessObject(Class rozhraní)  vrací reference na aktuální EJB, kterou lze předávat  lookup(String name)  slouží k vyhledávání objektů v ENC (JNDI)

Životní cyklus bezstavového beanu Does Not Exist Method-Ready Class.newInstance() business method systémová výjimka

Životní cyklus bezstavového beanu  Stav Does Not Exist  stav-nestav, instance ještě neexistuje  Stav Method-Ready Pool  instance se nachází v poolu  čeká na vyzvednutí kontejnerem a obsloužení klienta  Přechod z Does Not Exists -> Method-Ready Pool  vytvoření nové instance Class.newInstance()  injektáž potřebných prostředků (anotace + XML)  volání metody označené musí mít návratový typ void a být bez parametrů

Životní cyklus bezstavového beanu  Vyzvednutí z poolu  bean 'neví', kterého klienta bude obsluhovat  kontejner před voláním nastaví odpovídající SessionContext obsahuje údaje o klientovi a o probíhající transakci  po skončení volání putuje zpět do poolu  Smrt  pokud je kontejner již nepotřebuje redukce paměti zabírané poolem  volá se metoda

Stavové session beany  Udržují stav konverzace  udržování klientských dat mezi voláními  Každé volání jednoho klienta obsluhuje stejný objekt  Celý život beanu je věnován jedinému klientovi  Lze je nahlížet jako "prodlouženou ruku" klienta  klient si odkládá část své logiky a stavu na server

Rozhraní stavového beanu - příklad Podobně jako v případě bezstavového beanu, také pro stavový bean lze deklarovat lokální a vzdálené rozhraní V tomto případě mají obě rozhraní společného předka

Stavový bean - příklad

Stavový bean - implementace  Třída stavového beanu se  Implementuje lokální a/nebo vzdálené rozhraní  Stav v atributech beanu se uchovává mezi voláními  cart, client  Lze injektovat jiné beany nebo prostředky  orderService – odkaz na bezstavový bean  em – JPA manažer entit (perzistence)

Použití stavového beanu v servletu  Nemůžeme použít dependency injection  Servlet je jedináček => je sdílený mezi klienty  Injektovaná instance stavového beanu by nepatřila právě jednomu klientovi!  Musíme použít JNDI lookup vyhledat si bean sami  Lze zařídit, aby odkaz na bean byl v kontextu webové aplikace.  Konfigurace ve WEB-INF/web.xml – lokální rozhraní

Volání stavového beanu ze servletu

Uzavírací metoda  Voláním metody se ukončí život stavového session beanu

Životní cyklus stavového beanu Does Not Exist Method-Ready Passivated Class.newInstance @PostActivate business method systémová výjimka

Životní cyklus stavového beanu  Stav Does Not Exist  stav-nestav, instance ještě neexistuje  Stav Method-Ready Pool  Instance je v paměti a může obsluhovat svého klienta  Udržuje klientův vzdálený stav  Přechod z Does Not Exists -> Method-Ready  vytvoření nové instance Class.newInstance()  injektáž potřebných prostředků (anotace + XML)  volání metody označené musí mít návratový typ void a být bez parametrů

Životní cyklus stavového beanu  Opuštění stavu Method-Ready  Zavolání metody přechází bean do stavu Does Not Exist  Kontejner se může kdykoliv rozhodnout pro tzv. pasivaci Většinou při zatížení serveru, čištění paměti Algoritmus pasivace/aktivace není specifikován (srovnej s migracemi HTTP session)  Vypršení časového limitu – timeout Relace stavového beanu může být časově omezena Udává nebo prvek v ejb-jar.xml

Poznámka k transientním atributům  Serializace v Javě nastavuje transientní atributy na jejich defaultní hodnoty  primitivní čísla na 0  boolean na false  reference na null  V EJB tomu tak není a transientní atribut může po aktivaci nabývat libovolné hodnoty  jejich hodnota by měla být nastavana

Pasivace stavového beanu  Pravidla pro hodnoty atributů stavového beanu (stav konverzace s klientem)  Primitivní typy nebo serializovatelné objeky  javax.ejb.SessionContext  javax.jta.UserTransaction (transakce řízené mimo kontejner)  javax.naming.Context (pouze pokud odkazuje na JNDI ENC)  javax.persistence.EntityManager  javax.persistence.EntitiyManagerFactory  reference na jiné EJB  reference na tovární třídy prostředků řízené kontejnerem (např. javax.sql.DataSource)

Pasivace stavového beanu  V okamžiku, kdy se kontejner chystá pasivovat bean, volá se metoda  uzavírají se v ní otevřená připojení  všechny neserializovatelné atributy, které nejsou transientní, se nastavují na null  transientní atributy se ignorují  Způsob uložení stavu závisí na implementaci serveru  obvykle se využívá standardní serializace v Javě  Kontejner hlídá timeout i ve stavu pasivace

Aktivace stavového beanu  Jakmile klient zavolá metodu na pasivovaném beany, kontejner provádí jeho aktivaci  Kontejner provádí tyto úkony:  deserializace pasivovaného objektu  rekonstrukce odkazu na SessionContext  rekonstrukce odkazů na EJB a továrny prostředků  Po těchto úkonech se volá metoda  otevírají se v ní připojení uzavřená před pasivací  nastavují se hodnoty do atributů, které se nulovaly

Systémové výjimky  Kdykoliv je vyhozena systémová výjimka, kontejner zruší bean -> přechod do stavu Does Not Exist  Reprezentují interní chyby  Systémová výjimka je libovolná nekontrolovaná výjimka (RuntimeException), která není  také kontrolovaná výjimka java.rmi.RemoteException  Důsledky  rollback transakce, logovací hláška, zrušení instance  při pokusu klienta volat zrušený stavový bean se vyhazuje NoSuchEJBException

No-interface View  Novinka v EJB 3.1 (Java EE 6)  Vývojáři chtěli navrhovat session bean bez nutnosti psát rozhraní  V EJB 3.1 se nemusí psát lokální rozhraní  lokální rozhraní je tvořeno veřejnými metodami beanu  třída beanu je

Singleton EJB (od verze EJB 3.1)  Session bean, který má v aplikaci jedinou instanci  Vhodné pro sdílení dat napříč aplikací  srovnej s aplikačním kontextem ServletContext  Uchovává stav mezi voláními  Třída singletonu je  Může být vytvořen při startu aplikace  Třída singletonu se

Singleton EJB  Možnost řetězení v případě, že je důležité pořadí vytváření více singletonů “SomeSingleton2”)  kontejner zajistí jejich vytvoření před vytvořením singletonu, který na nich závisí  Poznámka: V clusterech má každý uzel vlastní singleton

Singleton - souběžnost  Souběžný přístup k singletonu je možný a je řízen  Souběžnost řízená kontejnerem (CMC) - default kontejner řídí souběžnost podle anotací na – exkluzivní přístup k – sdílený přístup k metodám možnost umístit na jednotlivé metody i – max. doba čekání na uvolnění  Souběžnost řízená beanem (BMC) bean si řídí souběžnost sám používá prostředky Javy, případne java.util.concurrent.*

Životní cyklus singletonu Does Not Exist Method-Ready business method systémová výjimka (vytváření závislostních singletonů)

Asynchronní volání (od EJB 3.1)  Volání metod na lokálním i vzdáleném rozhraní session beanu jsou obvykle synchronní (blokovaná)  Často je zapotřebí asynchronní (neblokované) volání  nečeká se na výsledek, např. tisk  Dříve řešeno pomocí Message Driven Beans a JMS  V EJB 3.1 lze metodu nebo třídu označit  návratový typ asynchronní metody  void  java.util.concurrent.Future – možnost vyzvednout si výsledek později

Asynchronní volání - příklad

Analogie k session beanům  Bezstavový bean  prostitutka – čeká v poolu (veřejný dům) na instrukci mamá, aby obsloužila klienta  klient si při opakovaných návštěvách nemůže být obvykle jist, zda bude obsloužen stejnou slečnou  Stavový bean  věrná manželka  po svatbě (vytvoření session) se v ideálním případě až do své smrti (volání věnuje pouze svému maželovi (klientovi)  sdílení majetku a rozhodování (odkládání stavu a logiky klienta na server)

XML Deployment Descriptor  Veškeré deklarace anotacemi tříd, rozhraní a metod lze analogicky provádět v tzv. XML deskriptoru  Deskriptor je uložen v META-INF/ejb-jar.xml EJB modulu