V rámci jarního semestru akademického roku 2018/19 probíhá na FI MUNI série setkání ve fromě kombinovaných přednášek a laboratorních cvičení věnovaná novinkám v Java EE 7 (okrajově i Java EE 8) a pokročilým tématům Java EE obecně.
Cílem tohoto nepovinného kurzu pod garancí laboratoře LaSArIS je seznámit studenty s pokročilými vlastnostmi Java EE, s novinkami v rámci Java EE 7 a naučit je pracovat s projekty JBoss.org zaštítěnými společností Red Hat. Na závěr kurzu studenti vytváří ve skupinkách projekt založených na prezentovaných technologiíích. Na základě tohoto projektu a jeho prezentace jsou poté ohodnoceni.
Osnova kursu
- Úvod, předhled novinek v Java EE 7 (Jiří Pechanec, 28.2.)
- CDI 2.0, EJB 3.2 (Matěj Novotný, 14.3.)
- Webové technologie v Java EE 7: RESTful Services (JAX-RS 2.0), JSON Processing (JSON-P), WebSocket (Jiří Kremser, 28.3.)
- Ukládání dat v cloudu přes Infinispan (Radim Vansa, 11.4.)
- Clustering a škálování WildFly (Radoslav Husár, 25.4.)
- Zabezpečení Java EE aplikace, JAAS (Peter Škopek, 9.5.)
- Management a monitorování WildFly (Zbyněk Roubalík, ??)
Kontakty
Matej Hrusovsky <mhrusovs@redhat.com>
Jiří Kolář <kolar@fi.muni.cz>
Prerekvizity
- Znalost programovacího jazyka Java
- Praktická znalost Java EE 7 technologií nebo absolvování kurzu v rámci studia
Curriculum
FI:PV243 Pokročilé Java tech.: JBoss - Informace o předmětu
Příprava vývojového prostředí
Cvičení ke kurzu lze provozovat z libovolného vývojového prostředí. Nezbytné požadavky jsou
- Java 8 (JDK, ne JRE)
- Maven 3
- Git (projekty qa · GitHub)
- WildFly 14.0.1.Final (Downloads · WildFly)
Studenti mohou použít jako IDE i JBoss Developer Studio. V tom případě postupujte podle níže uvedeného podrobného návodu. V ostatních případech je nutné, aby se studenti orientovali v použítí Git a Mavenu buď v jejich preferovaném IDE nebo v příkazové řádce. Aplikační server není nutné integrovat do IDE a může běžet jako samostaný proces.Při spouštění testů z Mavenu je nutné mít nastavenou proměnnou prostředí JBOSS_HOME na adresář, ve kterém máte nainstalovaný WildFly.
Důležité!!! Projekty si naklonujte a sestavte ještě před výukou.
JBoss Developer Studio
Instalace
Na počítač si nainstalujte Java 8 (nutné je JDK, nikoliv pouze JRE)
Instalace WildFly 14.0.1.Final
- Stáhněte si WildFly 14.0.1.Final ze stránky http://www.wildfly.org/downloads/
- Zip či tar.gz soubor si rozbalte na disk
Instalace JBoss Developer Studio 12.9.0
- Stáhněte si JBoss Developer Studio 12.9.0 (Stand-alone Installer) ze stránky Red Hat JBoss Developer Studio Download | Red Hat Developers
- Spusťte instalátor
Konfigurace JBDS - Propojení s WildFly 14
- Window -> Preferences
- Vybrat Server -> Runtime Environments, kliknout na Add...
- Vybrat JBoss Community -> WildFly 14 Runtime, zaškrtnout Create a new local server, kliknout na Next
- Home directory: Přes Browse vybrat adresář wildfly-14.0.1.Final, JRE: zvolit java-8*, kliknout na Finish
- Opustit konfigurační okno, v okně Servers uvidíme WildFly 14.0 Runtime Server
- Pokud v okně Servers nevidíme vytvořený server, pak klikneme na No servers are available. Click this link to create a new server.... Poté zvolíme JBoss Community -> WildFly 14.0 -> Next -> Finish
Git repozitář
- Naklonujeme repozitář s příklady podle návodu na GitHub - qa/pv243-a4m36jee-2016-cdi-seminar
Import projektu do JBDS
- Provést File -> Import... -> Existing Maven Projects -> Next
- Jako Root Directory zvolíme adresář s naklonovaným repozitářem
- Kliknout na Finish
- Operace bude trvat déle - Maven bude stahovat projektové závislosti
Spuštění projektu na serveru
- Zvolit okno Servers, pravé tlačítko, zvolit Add and Remove
- Zvolit <název projektu>, kliknout na Add a Finish
Požadavky na projekty
- Týmy 3-4 lidí, jeden z nich bude zodpovědný za vedení (problémy v týmu je nutné řešit včas s přednášejícími)
- Každý tým si volí téma podle svého uvážení
- Pokud si tým není jistý náplní svého tématu, může se obrátit na vyučujícího pro konzultaci/schválení
- Jako téma lze zvolit budoucí diplomovou či bakalářskou práci ze seznamu https://research.redhat.com/thesis/
- Není vyžadována implementace v rozsahu DP/BP
- Pokud tým neidentifikuje vlastní téma, ale použít některé z níže uvedených "záchranných"
Rezervační systém pro sportovní centra
Systém pro správu skladu
Auto-moto bazar
Systém pro půjčovny knih
- Každý student si zřídí účet na github.com, zdrojové kódy projektu budou tamtéž
- Volba git workflow je na každém týmu, taktéž rozdělení prací na projektu
- Vytvořit krátkou specifikaci - textovou či s doprovodem UML diagramů
- Implementace třívrstvé aplikace
- Prezentační vrstva - JSF (volitelně použití knihovny RichFaces) nebo moderní JavaScriptový framework s REST backendem, hodnotit se bude funkcionalita, nikoliv grafické provedení
- Business vrstva - EJB
- Datová vrstva - perzistence pomocí JPA 2 nebo Infinispan (zde se očekává konfigurace Infinispan-u pro trvalé uložení dat)
- Aplikace bude používat CDI, není vhodné používat dependency injection definovanou v Java EE 5 (tzn. očekáváme i použití např. typově bezpečného persitence contextu)
- Aplikace bude plně zabezpečena, bude používat minimálně tři úrovně oprávnění (role)
- Datový model bude anotovaný pomocí Bean Validation - stačí použít předdefinované anotace, použití i vlastních omezení je plus
- Aplikace bude testovatelná (Arquillian)
- Aplikace bude nasazena v clusteru dvou uzlů v doménové konfiguraci, přiložen konfigurační skript (JBoss CLI) a demonstrována její odolnost vůči výpadku jednoho z nich (lze simulovat na jednom počítači)
- Volitelně bude aplikace nasazena v OpenShift Online nebo zabalena jako mikroslužba pomocí projektu Thorntail
- Aplikace bude vystavovat rozhraní pro komunikaci mezi systémy (JAX-RS) - formát zpráv JSON
- Aplikace bude používat alespoň jeden WebSocket endopint
- Aplikace bude volat alespoń jeden REST endpoint (JAX-RS)
- Vystavené endpointy budou podoporovat zabezpečení
- Aplikace bude obsahovat alespoň jeden use case pro použití Concurrency nebo Batching API
- Aplikace bude obsahovat alespoň jeden use case pro použití JMS 2.0 API
- Každý projekt bude prezentován, studenti budou tázáni na části, které implementovali a technologie, které použili
Comments