1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:



Podobné dokumenty
(Enterprise) JavaBeans. Lekce 7

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Tvorba informačních systémů

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Technologie Java. Jaroslav Žáček

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Platformy / technologie. Jaroslav Žáček

X33EJA Enterprise Java

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Architektury informačních systémů

Architektury informačních systémů

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

KIV/PIA 2013 Jan Tichava

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Server-side technologie pro webové aplikace

KIV/PIA Semestrální práce

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Tvorba informačních systémů

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Tvorba informačních systémů

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Architektura aplikace

Technologie Java. Jaroslav Žáček

Java technologie pro webové aplikace

Tvorba informačních systémů

X36WWW. Technologie aplikačních serverů. Miroslav Bureš,, Martin Klíma. X36WWW: 12. přednáška 1

Úvod do Web Services

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

Elektronická podpora výuky předmětu Komprese dat

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

PA165: Úvod do Java EE. Petr Adámek

Databázové a informační systémy

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Softwarové komponenty a Internet

Platformy / technologie. Jaroslav Žáček

Instalace a konfigurace web serveru. WA1 Martin Klíma

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

RESTful API TAMZ 1. Cvičení 11

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Spring framework 2.0. Roman Pichlík CZJUG

Oddělení webového a aplikačního serveru. Běží zde několik aplikací.

RESTful web service v Javě

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Java a J2EE. Cleverlance. Lukáš Marek lukas.marek@cleverlance.com

Návrhové vzory pro J2EE. Miroslav Beneš

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Enterprise Java Beans 3.0

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

IS pro podporu BOZP na FIT ČVUT

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Java Message Service (JMS) Martin Ptáček, KOMIX s.r.o.

SOAP & REST služby. Rozdíly, architektury, použití

Reranking založený na metadatech

}w!"#$%&'()+,-./012345<ya

java remote method invocation Kateřina Fricková, Matouš Jandek

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Návrhové vzory pro J2EE

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Internet Information Services (IIS) 6.0

INFORMAČNÍ SYSTÉMY NA WEBU

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Databáze EMS podacích lístků

Artlingua Translation API

Vývoj informačních systémů. Přehled témat a úkolů

Použití databází na Webu

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Web Services na SOAP

E LEARNINGOVÁ WEBOVÁ APLIKACE PRO VÝUKU BIOMEDICÍNSKÉHO INŽENÝRSTVÍ Petr Huňka

Vývoj informačních systémů. Přehled témat a úkolů

Analýza a Návrh. Analýza

Architektura GIS KMA/AGI. Karel Jedlička

Formy komunikace s knihovnami

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Nové jazykové brány do Caché. Daniel Kutáč

X36ASS Dokumentace projektu. Firemní helpdesk se správou požadavků. Bc. Ondřej Brynda Bc. Petr Hůla

TECHNOLOGIE RTSJ A JEJÍ UPLATNĚNÍ PŘI TVORBĚ APLIKAČNÍ A PREZENTAČNÍ VRSTVY PORTÁLOVÝCH ŘEŠENÍ

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Tvorba informačních systémů

O Apache Derby detailněji. Hynek Mlnařík

CineStar Černý Most Praha

Tvorba informačních systémů

Co je nového v Java EE 6

Transkript:

Architektura webové aplikace, funkce jednotlivých vrstev, životní cyklus standardizovaných komponent Java EE, Servlety, JSP, frameworky, návrhové vzory 1. Distribuce Javy Distribuce Javy se liší podle jejího zamýšleného použití: JME = Java Micro Edition pro mobilní aplikace, omezený rozsah funkcí JSE = Java Standard Edition pro desktopové aplikace (GUI např. pomocí Swing, AWT) J2EE = Java Enterprise Edition pro webové aplikace, obvykle je nasazena na aplikačním serveru (klient nemusí) 2. Vlastnosti J2EE aplikace - komponentový přístup - komponenty mohou být distribuované na různých strojích (klient, server, DB) - aplikace rozdělena do vrstev (většinou 3) - serverová část aplikace bývá nasazena na aplikačním serveru, který umožňuje zpracování více požadavků naráz (multi-threading) - podpora JNDI, java beans, JAAS (autentizace), JMS (Java Messaging Service), servlety, transakce (JTA Java Transactions API) Obrázek 1 - Architektura J2EE aplikace Obrázek 1 ukazuje dva různé přístupy. V levé části obrázku je aplikační tlustý klient přistupující rovnou k business vrstvě serverové části aplikace. V pravé části klient používá pro přístup webový prohlížeč (tenký klient), ve kterém se mu vykresluje GUI v podobě HTML stránek vygenerovaných z JSP stránek umístěných na serveru. 3. Fyzická architektura J2EE aplikace J2EE aplikace je komponentová. Na aplikační server ji lze nasadit ve dvou podobách: -1-

jako EAR archiv jako WAR archiv EAR archiv se používá v případě nasazení EJB (Enterprise Java Beans). Pak obsahuje jeden WAR archiv JSP stránkami, obrázky a styly a několik JAR archivů s EJB. JAR archivy obsahující EJB jsou rozdělené podle své funkčnosti a tvoří logické celky, aby je bylo možné znovu použít v jiném projektu. Samotný WAR archiv lze použit, pokud nechceme nasazovat EJB. Tento způsob nasazení je běžný u light-weight frameworků jako JSF, Spring, Struts... Adresářová struktura WAR archivu WAR archiv má předepsanou strukturu: v kořenovém adresáři jsou CSS styly, obrázky a JavaScript v adresáři META-INF je soubor MANIFEST.MF v adresáři WEB-INF obsahuje soubor web.xml (deskriptor) v adresáři WEB-INF/classes jsou zkompilované Java třídy v adresáři WEB-INF/jsp jsou Java Server Pages v adresáři WEB-INF/lib jsou knihovny ve formátu JAR Deskriptor Deskriptor je konfigurační soubor s názvem web.xml, který musí být v každé webové aplikaci. Obsahuje mapování servletů a filtrů na requesty, kódování JSP stránek, parametry servletů a stanovuje, která stránka se zobrazí jako první (welcome-file). Obrázek 2 - Deskriptor -2-

4. Logická architektura J2EE aplikace (vzor MVC) Většinou je aplikace navržena podle voru MVC (model-view-controller). Jedná se o konkrétní aplikaci vzoru oddělení zodpovědností (separation of concerns), který předepisuje vysokou kohezi jednotlivých komponent. Každá komponenta by měla mít vysoce soudržnou sadu zodpovědností a všechny ostatní požadavky by měla delegovat komponentám, které jsou úzce specializované zase na jinou činnost. MVC tedy odděluje zodpovědnosti za data (model), pohled na data (view) a manipulaci s pohledem na data (controller). Aplikace je rozdělena na tři vrstvy: datovou, prezentační a ovladače (controllers). Tyto tři vrstvy jsou na sobě nezávislé a umožňují snadné vyjmutí jedné vrstvy a nahrazení jinou implementací. Typicky je možné zaměnit vrstvu View implementovanou pomocí JSP za generování do PDF nebo do Excelu. Obrázek 3 - Architektura MVC Obrázek 3 ukazuje jednu z možných implementací MVC s FrontControllerem. Implementací může být více (např. knihovna Swing má pro desktopové aplikace svou implementaci MVC). Všechny requesty na zdroje aplikace jsou nejdříve přijaty komponentou FrontController. Podle požadované URL adresy najde odpovídající controller a předá mu request ke zpracování. Controller podle požadavku vytvoří takzvaný model, neboli data potřebná pro vytvoření správné odpovědi, která má být vrácena klientovi. Model je předán View vrstvě, která data vykreslí odpovídajícím způsobem. Vygenerovaná odpověď je zaslána zpět klientovi. Rozvrstvením aplikace zvyšuje přehlednost kódu a oddělení nesouvisejících částí do logických celků, které spolu transparentně komunikují, aniž by se mezi nimi vyskytovala nějaká těsná vazba. Takto navržený systém je robustní vzhledem ke svému rozšiřování a úpravám. -3-

5. Životní cyklus HTTP servletu Obrázek 4 - Životní cyklus servletu Aplikační server pro každý servlet vytvoří nový servlet a zavolá nejdříve metodu init(). Pak následuje obsluha požadavku metodou service() a nakonec je po zavolání destroy() servlet je zničen. Programátor může poskytnout vlastní implementaci metod init(), service() a destroy(). Podle typu HTTP requestu metoda service() volá různé implementace: doget(), dopost(), dodelete(),... Důležité metody HTTP servletu Parametrem metody doget() je objekt třídy HttpServletRequest, který má tyto důležité metody: String getparameter(string name) vrátí request parametr (např. hodnota formulářového pole) void setparameter(string name) nastaví request parametr String getremoteaddr() vrací IP adresu klienta String getscheme() vrací protokol requestu (http, https, ftp) String getcontextpath() vrací část aktuální URL adresy String getheader(string name) vrací obsah hlavičky HttpSession getsession() vrací session objekt Parametrem metody doget() je objekt třídy HttpServletResponse, který má tyto důležité metody: void addcookie(cookie c) přidá do odpovědi cookie void setheader(string name, String value) nastaví hodnotu hlavičky ServletOutputStream getoutputstream() poskytuje proud pro zápis na výstup void setcontenttype(string type) nastaví typ výstupu (např. html, xml, pdf...) -4-

6. Java Beans Bean implementují aplikační logiku nebo vystupují v roli entit cílové domény (entita zákazník, výpůjčka...). Bean může mít lokální nebo vzdálené rozhraní podle toho, jestli ji se nachází na stejném stroji, nebo je na jiném stroji. Bean je několik druhů: statefull bean stateless bean message driven bean Statefull bean Statefull bean si uchovává kontext pro každého klienta zvlášť. Je náročnější a pomalejší, proto bychom měli používat stateless, kdekoliv je to jen možné. Životní cyklus: 1. klient zahájí životní cyklus beany voláním metody create() 2. EJB kontejner vytvoří instanci beany a zavolá setsessioncontext() a ejbcreate() 3. bean je připravena na volání business metod 4. bean může být deaktivována voláním ejbpassivate(), čímž je bean přesunuta z primární do sekundární paměti 5. pokud je na deaktivovanou bean volána nějaká její business metoda, je bean přesunuta zpět do primární paměti 6. pokud bean není potřeba, je pomocí remove() zničena a garbage collector ji smaže z paměti Programátor má kontrolu jen nad metodami create() a remove(). Ostatní si řídí kontejner sám. Obrázek 5 - Statefull bean Stateless bean Stateless bean je jednodušší. Nepamatuje si kontext volání klienta. Životní cyklus: -5-

Obrázek 6 - Stateless bean Message driven bean Pomocí JMS můžeme posílat zprávy jiným klientům, kteří na ně reagují (implementují metodu MessageListener.onMessage()). Jsou dva modely komunikace: Point to point pomocí fronty (queues, FIFO), příjemce je jen jeden Publish / subscribe pomocí tzv. topics, příjemců je více 7. JSP Obrázek 7 - Message Driven bean - JSP je textový dokument obsahující statické (X)HTML tagy a JSP tagy - JSP tagy generují dynamický obsah - JSP umožňuje používat kusy Java kódu v HTML stránce (scriptlet) na způsob ošklivého PHP kódu, ale tak bychom to dělat neměli! Lepší je vytvořit data pomocí controlleru a předat -6-

je v podobě modelu do view vrstvy, kde se zobrazí za pomoci JSP tagů (rozšíření se jmenuje JSTL) - JSP se při prvním použití kompiluje a vytvoří se Servlet, který dělá to, co uměla původní JSP stránka (Obrázek 8) Obrázek 8 - Kompilace JSP na Servlet 8. Frameworky Je jich spousta [4]. Jmenujme Struts, Tapestry, Spring, JSF, GWT, Vaadin. Zdroje [1] Dokumentace J2EE. http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/overview.html [3] Dokumentace EJB. http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/ejbconcepts9.html [2] Mrázek, Pavel: Diplomová práce. https://dip.felk.cvut.cz/browse/pdfcache/mrazepa1_2011dipl.pdf [3] Klíma, Martin: Přednáška z WA2. http://edux.feld.cvut.cz/courses/a4m39wa2/_media/lectures/03/javaee.pdf [4] Přehled J2EE frameworků. http://en.wikipedia.org/wiki/comparison_of_web_application_frameworks#java_2-7-