Version 12

    V rámci jarního semestru akademického roku 2016/17 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 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

    1. Úvod, předhled novinek v Java EE 7 (Jiří Pechanec, 27.2.)
    2. CDI 1.2, EJB 3.2 (Matěj Novotný, 13.3.)
    3. Webové technologie v Java EE 7: RESTful Services (JAX-RS 2.0), JSON Processing (JSON-P), WebSocket (Tomáš Remeš, 27.3.)
    4. Ukládání dat v cloudu přes Infinispan (Vojtěch Juránek & Jiří Holuša, 10.4.)
    5. Clustering a škálování WildFly 10 (Radoslav Husár, 24.4.)
    6. Zabezpečení Java EE aplikace, JAAS (Peter Škopek, 22.5.)
    7. Management a monitorování WildFly 10 (Zbyněk Roubalík, 15.5.)

     

    Kontakty

    Jiří Pechanec jpechane@redhat.com

    Jiří Kolář kolar@fi.muni.cz

     

    Prerekvizity

    • Znalost programovacího jazyka Java
    • Praktická znalost Java EE 5/6 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

    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 10.0.0.Final

    1. Stáhněte si WildFly 10.0.Final ze stránky http://www.wildfly.org/downloads/
    2. Zip či tar.gz soubor si rozbalte na disk

    Instalace JBoss Developer Studio 10.3.0

    1. Stáhněte si JBoss Developer Studio 10.3.0 (Stand-alone Installer) ze stránky Red Hat JBoss Developer Studio Download | Red Hat Developers
    2. Spusťte instalátor

    Konfigurace JBDS - Propojení s WildFly 10

    • Window -> Preferences
    • Vybrat Server -> Runtime Environments, kliknout na Add...

    jbds-server-1.jpg

    • Vybrat JBoss Community -> WildFly 10.0 Runtime, zaškrtnout Create a new local server, kliknout na Next

    wf10.png

    • Home directory: Přes Browse vybrat adresář wildfly-10.0.0.Final, JRE: zvolit java-8*, kliknout na Finish

    wf10-runtime.png

    • Opustit konfigurační okno, v okně Servers uvidíme WildFly 10.0 Runtime Server

    ss4.png

    • 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 10.0 -> Next -> Finish

    Git repozitář

    Import projektu do JBDS

    • Provést File -> Import... -> Existing Maven Projects -> Next

    choose_import.png

    • Jako Root Directory zvolíme adresář s naklonovaným repozitářem

    maven_import.png

    • 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://thesis-managementsystem.rhcloud.com/
        • 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)
    • 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