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



Podobné dokumenty
KIV/PIA 2013 Jan Tichava

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

(Enterprise) JavaBeans. Lekce 7

Tvorba informačních systémů

Technologie Java. Jaroslav Žáček

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

Úvod do Web Services

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

Server-side technologie pro webové aplikace

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

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

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

Spring framework 2.0. Roman Pichlík CZJUG

Web Services na SOAP

Michal Krátký, Miroslav Beneš

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

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ů

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

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

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

JavaServer Faces Zdeněk Troníček

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

X33EJA Enterprise Java

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

Architektury informačních systémů

Platformy / technologie. Jaroslav Žáček

Technologie Java. Jaroslav Žáček

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

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

TÉMATICKÝ OKRUH Softwarové inženýrství

Architektury informačních systémů

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Softwarové komponenty a Internet

Ú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. Petr Šlechta Sun Microsystems

Webové služby. Martin Sochor

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

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

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

Tvorba informačních systémů

Tvorba informačních systémů

Komponentový návrh SW

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

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

UJO Framework. revoluční architektura beans. verze

Enterprise Java Beans 3.0

RMI - Distribuované objekty v Javě

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

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

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

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

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

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

RESTful web service v Javě

Spring Framework Handout

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

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

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

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Co je nového v Java EE 6

Požadavky pro výběrová řízení TerraBus ESB/G2x

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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

1 Webový server, instalace PHP a MySQL 13

Internet Information Services (IIS) 6.0

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

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

Komponentní technologie

Použití databází na Webu

Tvorba informačních systémů

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Common Object Request Broker Architecture

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Tvorba informačních systémů

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Instalace a konfigurace web serveru. WA1 Martin Klíma

Návrhové vzory pro J2EE. Miroslav Beneš

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Platformy / technologie. Jaroslav Žáček

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

NSWI096 - INTERNET JavaScript

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Tvorba informačních systémů

INFORMAČNÍ SYSTÉMY NA WEBU

Tvorba informačních systémů

Tvorba informačních systémů

1. Webový server, instalace PHP a MySQL 13

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

Přizpůsobení JSTL pro Google App Engine Datastore

Návrhové vzory Tvorba objektů

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

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Transkript:

Rozšíření CGI webserver předá požadavek dané externí aplikaci (např. PHP), která daný požadavek obslouží Oddělení webového a aplikačního serveru. Běží zde několik aplikací. 4 vrstvá architektura 1) klientská vrstva 1. webový klient (HTML) 2. plný klient (non-html, desktop aplikace) 2) webová vrstva 1. Java EE server-side 2. JSP, servlety 3) bussiness vrstva 1. Java EE server, aplikační server 2. enterprise beans 4) databázová vrstva 1. enterprise information system (EIS) Webový kontejner obsahuje servlety JSP stránky EAR WAR zabalení všech vrstev aplikace do jednoho balíčku obsahuje v sobě další balíčky, které mají zabalené jednotlivé vrstvy (.war,.jar,.rar) obsahuje deskriptory sloužící k popisu jednotlivých balíčku (ve formátu.xml) webová jednotka schopná deploymentu na server standardní deskriptor (web.xml, sun-web.xml, *.tld) lib většinou.jar knihovny classes -.class soubory tags -.tags soubory Web.xml mapování URL chování při výskytu chyby definice zdrojů (enterprise beans, data sources) globální parametry listenery filtry Základní komponenty EJB, servlety, JSP, JSTL frameworky (JSF, Struts, ) JMS (třídy a rozhraní pro posílání, příjímání a čtení zpráv) JTA (Java Transaction API) transakce

JavaMail posílání emailů JAXP (Java API for XML Processing) zpracování XML, SAX, DOM, XSLT JDBC přístup k relačním databázím JPA mapování mezi objekty a relační databází JNDI rozhraní poskytující pojmenování objektů a vyhledávání JAAS autorizace, autentikace uživatelů Applet část javovské aplikace, která umí běžet v prostředí webového prohlížeče Servlet javovská třída rozšiřuje schopnost serveru obsloužit http požadavek vždy pouze jedna instance daného servletu rozšířeno o javax.servlet.http.httpservlet problém: několik vláken přistupuje ke stejné části kódu najednou potřeba synchronize metoda service musí být thread-safe, prostředky pro řízení přístupu životní cyklus 1) nahrání třídy 2) vyrobení instance 3) iniciování instance pomocí metody init() 4) poté je předán request a response metodě service() 5) pokud je servlet volán opakovaně volá se už pouze metoda service() 6) pro odstranění z kontejneru metoda destroy() Vzájemné volání servletů pomocí objektu RequestDispatcher include() - řízení se předá zpět forward() - předávající stránka nemůže nic vypsat do output streamu, může modifikovat request a response Sdílení informací mezi servlety Web context žije tak dlouho jako webová aplikace kontext celé aplikace Session svázáno s prohlížečem Request svázáno s jedním dotazem (vydrží I forward) Page svázáno s konkrétní stránkou (data k dispozici pouze u jedné stránky, po forwardu se maže) pomocí statické proměnné Cookie = JSESSIONID reprezentace pomocí objektu HttpSession invalidate() - zničí session request.getservletpath() - vrací URL servletu request.getcontextpath() - vrací kontext, ve kterém servlety běží

JavaServerPages JSP textový dokument obsahuje statická data, většinou XHTML kód verze: standard a XML direktivy - %@ globální informace pro kompilátor akce informace pro fázi obsluhy dotazu (XML značky) skriptovací elementy kus java kódu (scriptlety, deklarace, výrazy - <%, <%!, <%=) životní cyklus v okamžiku prvního zpracování je JSP stránka zkompilována na servlet dále se vykonává jen servlet z JSP při každém dalším dotazu na JSP stránku se kontroluje, zda stránka není novější než servlet pokud ano => provede se kompilace pokud ne => vykonán existující servlet Objekty v JSP pagecontext kontext konkrétní stránky application aplikační kontext out posílání dat na výstup exception config page request response JavaBeans označení pro java třídu standardizovaný formát cíl: jednoduchá znovupoužitelnost často řeší jeden konkrétní problém musí mít konstruktor bez parametrů nemá instanční proměnné typu public vše se řeší přes gettery a settery možnost serializace reprezentace: vizuální komponenty (buttony,..) nevizuální (časovač, DB spojení) reprezentace aplikační logiky Serializace objekty se vytvoří proud bytů a pak je možné je uložit do soubor nebo zabalit do streamu a poslat transient označení proměnné, které serializovat nechceme (vlákno, připojení k DB) writeobject(), readobject() - private metody serializují se instační proměnné a static Unified Expression Language jazyk pro získávání a zápist dat do objektů (bean) umožňuje

číst data zapisovat data volat metody objektů počítat aritmetické operace výraz začíná $ - okamžité vyhodnocení (immediate evaluation) backslash ruší interpretaci výraz začíná # - odložené vyhodnocení (deferred evaluation) volá se později může zavolat framework JSTL JSP Standard Tag Library kompatibilní se syntaxí XML existuje několik standardních knihoven značek (Core, XML, SQL, Functions, i18n) značky obsahují prefix + URI <%@ taglib prefix= c uri= http://java.sun.com/jstl/core_rt > sada standardizovaných knihoven např. <c:out > <c:out /> c: je namespace Resource bundle textový soubor, který obsahuje sadu klíčů a hodnot používá se pro vícejazyčné aplikace.properties soubory defaultní soubor bundle.properties další soubory bundle_cs.properties zakončené národní značkou Tag Handler třída sloužící pro implementaci uživatelských značek když je v JSP stránce nalezena značka, překladač udělá: vytvoří instanci TagHandleru zavolá setjspcontext(), setparent() inicializuje atributy značky vyrobí objekt typu JspFragment a zavolá setjspbody() zavolá metodu dotag() - vykoná veškerou práci možnost použití tzv. dynamických atributů nejsou definovány v.tld souboru ale za běhu Tag Library Descriptor XML soubor, který informuje kontejner o tom, jaké uživatelské značky jsou dostupné.tld soubor Google Web Toolkit překladač z jazyka Java do JavaScriptu + HTML klientská I serverová část jsou napsané v Javě a pomocí nástroje je klientská přeložena a zároveň je vytvořeno rozhraní, které dovolí asynchronní komunikaci se serverem sada JavaScript a Java tříd vývojové prostředí SDK Entry Point třída, která se má spustit v okamžiku deploymentu projektu implementuje rozhraní EntryPoint

v metodě onmoduleload() je vytvářeno UI buttony, labely,.. ale i listenery (v tomto případě handlery) pro obsluhu tlačítek apod. handlery jsou implementovány pomocí vnitřních anonymních tříd (ale lze vytvořit i pomocí klasické třídy v Javě) GWT moduly projekty se dělí na moduly mají deskriptor obsahují zděděné moduly používá I soubor gwt.properties informace potřebné pro překlad dynamické zavádění tříd na základě podmínky, si určím, kterou třídu použiju GWT RPC (Remote Procedure Call) z klientského kodu je zavolán serverový kód komunikace pomocí AJAX pro komunikace jsou potřeba serializovatelné objetky synchronní rozhraní definuje interface implementace na serveru Zavádění kódu prohlížeč nahraje HTML stránku <script src= ModuleName_nocache.js > - nahrání JavaScriptu příslušná verze.cache.html vytvoří skrytý <iframe> a nahraje se do něj po nahrání se spustí vlastní kód aplikace Deferred binding v okamžiku překladu aplikace kompilátor zjistí charakteristické rysy pro daný prohlížeč a vygeneruje přesnou specifickou verzi aplikace podle těchto požadavků prohlížeče GWT práce se session metoda getthreadlocalrequest() př. getthreadlocalrequest().getsession.setattribute() GWT a historie v prohlížeci iframe, ve kterém se historie bude schovávat odchytávání událostí v UI tato událost bude nastavena jako bod návratu vytvoříme nějaký String reprezentuje daný bod v historii v historii je vyhledán příslušný String a podle něj je aplikace nastavena do příslušného stavu JavaServer Faces framework pro vytváření UI v zásadě řeší životní cyklus stránky (formuláře), UI si pamatuje svůj stav UI komponenty server-side validace, konverze dat události i18n navigace vlastní značky

JSF aplikace.jsp stránky obsahuje backing beans - JavaBeana, která je spřažena s funkčností stránky konfigurační soubory soubor JSF Faces Configuration (XML soubor) faces-config.xml další objekty validátory, konvertory, listenery první přístup k formuláři poprvé Initial Request každý formulář představuje na serveru datovou strukturu ve formě Beany využití deferred evaluation => value = #{Osoba.jmeno} Konverze a validace řeší se převod Stringu (formulář) na objekt (Java), ale I opačně u základní datových typů probíhá konverze automaticky validace kontrola správnosti dat nejprve konverze, pak validace vlastnost immediate (true, false) vlastnot komponenty, u které se přeskočí konverze a validace použití u akcí, které nezpracovávají data formuláře popř. ty které zpracovávají jen část formuláře Životní cyklus initial request postavení stromu vytvoření odpovědi (render response) postback request postavení stromu vyčtení parametrů z formuláře konverze a validace (při alespoň jedné chybě se rovnou přejde na render response) uložení hodnot (model Backing beana) akce a navigace vytvoření odpovědi JSF komponenty Tag inputtext, selectoneradio, UIComponent reprezentace ve stromu UIInput, UISelectOne, Renderer vykreslí komponentu v HTML Listbox, Text, Radio JDBC definuje 4 typy ovladačů typ 1 použití ODBC protokolu (JDBC-ODBC bridge) je vyžadován specifický ovladač pro danou databázi

typ 2 tento ovladač má za úkol překládat požadavky z JDBC do určitého spec. ovladače, který je určen právě pro jeden typ databáze typ 1 je podmnožinou tohoto typu ovladače stejné výhody/nevýhodu jako u typu 1 typ 3 mezi aplikací a databází existuje server, který představuje rozhraní typ 4 databáze je napsaná v Javě, platformově nezávislé není třeba žádného prostředníka Třída DriverManager má na starost dostupné ovladače a spojení s DB musí znát ovladače, které jsou k dispozici URL databáze Třída DataSource a ConnectionPoolDataSource DataSource je zdroj, který chce přistupovat k databázi ConnectionPool je sada těchto zdrojů a přistupuje k DB jako celek šetření prostředků paměť, čas v souboru web.xml je potřeba vytvořit odkaz na daný DataSource JNDI spojení s DB lze zaregistrovat do JNDI (Java Naming and Directory Interface) kdo se potřebuju spojit s DB, nejprve vyhledá toto spojení v JNDI vytvoření iniciálního kontextu pro hledání a vyhledání v adresáři Context c = new InitialContext(); datasource = (DataSource) c.lookup("java:comp/env/jdbc/y36tw2pool"); SQLException zřetězená sada všech výjimek, které nastaly další výjimky se získavají metodou getnextexception() Statement třída pro práci s databází Statement získáme voláním metody třídy Connection metody executeupdate() - create, insert, update, delete, executequery() - select, vrací ResultSet, Typy ResultSetů TYPE_FORWARD_ONLY procházení pouze metodou next() TYPE_SCROLL_INSENSITIVE procházení metodami next() i previous() neprojeví se změny, které mezitím vznikly v databázi

TYPE_SCROLL_SENSITIVE procházení metodami next() i previous() změny, které mezitím vznikly v databázi se okamžitě projeví Locking a izolace serializable pokud transakce manipuluje s daty, transakce ho uzamkne a ostaní musí čekat pesimistic locking zamykání všech záznamů, kterou mohou být transakcí ovlivněny optimistic locking nezamyká se nic očekává se, že nedojde k paralelnímu přístupu ke stejným datům Enterprise Beans bussiness logika na straně serveru tři typy EJB session bean reprezentují aplikační logiku stateless (jsou obecné, nezávislé na klientovi) nemusí se ukládat statefull (jsou svázány s danou session a dokáží si něco zapamatovat) musí se ukládat zatěžují více server vhodné na velké objemy dat singleton jako stateless ale v poolu je pouze jedna EJB entity bean objekty rezprezentující persistenci jsou navázány na databázi objektový přístup k datům message driven bean zpracovávají události generované jinými aplikacemi asynchronní volání jsou bezestavové EJB žije v kontejneru zde jsou ty beany přístup jak z webové tak z stand-alone aplikace Anotace aditivní procesní instrukce přidání metadat k metodám, proměnným, interfacům @Resource(name = CustomerDB ), @EJB, @Stateless Reflexe je schopnost jazyka zjišťovat informace o svých vlastních objektech (za běhu programu) EJB 3.x beana je POJO (Plain Old Java Object) třída má prázdný konstruktor, gettery a settery kontejner řídí životní cyklus této beany

lokální a vzdálené rozhraní Stateful používat pouze pro desktopové aplikace, v případě webové aplikace použít HttpServlet. Stateless lze používat u obou. Message Driven Beans listener, který zpracovává zprávy 1.způsob - zprávy jsou posílány (asynchronně) do fronty a tato beana je postupně odebírá a zpracovává (point to point, fronta) 2.způsob existuje prostředník, který rozhoduje na kterou beanu zprávy zašle ke zpracování více příjemců (publish / subscribe) jsou podobné stateless EJB nejsou stavové jsou zaměnitelné JMS Java Message Service definuje několik typů zpráv zpráva má hlavičku, vlastnosti a tělo JPA Java Persistence API práce na objektové úrovni s relační databází mapování tabulek a záznámů na POJO ORM = Object Relational Mapping automatické mapování pomocí jmen anotují se pouze výjimky v objektech funguje dědičnost existuje několik interpretací tohoto JPA (Hibernate, Oracle Toplink) Přímá práce s databází pomocí JDBC zvyšuje chybovost snižuje přenositelnost kódu míchají se dvě logické úrovně Entity Manager stará se o práci s entitama, s připojením (injekcí nebo pomocí factory) metody flush() - zapsání do DB, persist(entity) uložení entity, remove(entity),... v něm žijí instance na jednotlivé řádky v tabulce v databáze připojení pomocí konfiguračního souboru persistence.xml má své vlastní metody detached stav pokud se entita zpropaguje až někam k servletu, tak změna entity v servletu nemá vliv na změnu v databázi zajistí se pomocí metody EntityManager.merge(obj)

Entita měla by být serializovatelná nesmí být final a ani její metody a atributy nesmí být final musí mít primární klíč @Id musí mít prázdný public nebo protected kontruktor anotovat lze atributy třídy instance nebo její metody (ke getteru) nelze kombinovat! Vztahy mezi entitami unidirectional jen jedna strana (vlastník) ví o té druhé @ManyToOne() bidirectional obě strany o sobě vzájemně ví jedna je vlastníkem - @ManyToOne() Spring IoC (Inversion of Control) návrhový vzor, který umožňuje uvolnit vztahy (závislosti) mezi svázanými komponentami (vrstvami aplikace) třída nevytváří sama instance dalších tříd, ale jsou jí dodány nějakým způsobem z vnějšku constructor injection setter injection interface injection Dependency Injection jedná se o konkrétní techniku pro vkládání závislostí využití hollywoodského principu - Nevolejte nám, my se ozvěme IoC kontejner se stará o sestavení jednotlivých komponent dohromady RMI (Remote Method Invocation) volání vzdálených metod volání skrze sockety je mnoho režijního kódu => vytvořeny knihovny implementující techniku volání metod umístěných na vzdálených systémech pouze pro platformu Java aplikace založena na architektuře klient-server volání je synchronní a blokovací klient pracuje se stubem lokální zástupný objekt server pracuje se skeletonem skutečný objekt na serveru Postup vytváření aplikace se vzdáleným objektem 1) definice rozhraní vzdáleného objektu (rozhraní dědí z rozhraní java.rmi.remote) 2) implementace vzdáleného objektu 3) vygenerování stubů a skeletonů (výstupem jsou.class soubory tříd pro vzdálený objekt) 4) vytvoření instance vzdáleného objektu na serveru (publikování do jmenné služby) 5) získání přístup ke vzdálenému objektu u klienta (Naming.lookup(String))

Další technologie podobné RMI RPC platformově závislé CORBA platformově nezávislé DCOM Webové služby technologie pro tvorbu webových a distribuovaných aplikací standard pro komunikaci dvou aplikací využívá protokoly SOAP, HTTP a jazyk XML, WSDL SOAP (Simple Object Access Protocol) protokol sloužící pro výměnu zpráv založených na formátu XML přes síť (zejména tedy přes HTTP) definuje jak volat vzdálené procedury (RPC) a jak posílat dokumenty WSDL (Web Services Definition Language) jazyk pro popis webových služeb založen na formátu XML definuje popis služby (co dělá) jak danou službu používat kde službu najít struktura porttype abstraktní definice služby způsob volání služby SOAP, JMS, přímé volání ports kde se dá ke službě přistoupit UDDI (Universal Description, Discovery and Integration) registr dostupných webových služeb (adresářová služba) slouží k vyhledání dané služby včetně jejího popisu ve formátu WSDL popis nám říká, jakým způsobem lze danou službut volat REST (Representational State Transfer) způsob komunikace s webovou službou pro komunikaci se využívá metod protokolu HTTP (get, post, put, delete) služby využívají REST se skládají ze zdrojů a každý je jednoznačně identifikován (URI)

Typy testů podle automatizace ruční (je nebo není dostupná specifikace aplikace) automatické podle zaměření unit testy (aplikace i kódu) systémové testy integrační testy zátěžové testy penetrační testy (simuje roli hackera snaží se odhalit slabá místa) regresní testy crash testy podle fáze projektu alfa testy beta testy Klasifikace chyb bugy špatná práce s aplikací, ztráta/poškození dat nesoulad aplikace se specifikací špatné pochopení procesu/aplikace uživatelem