Advanced Java EE Lab (jaro 2012)

    V rámci jarního semestru akademického roku 2011/12 proběhne na FI MUNI série setkání ve fromě kombinovaných přednášek a laboratorních cvičení věnovaná pokročilým tématům Java EE.

     

    Cílem tohoto nepovinného (a nehodnocené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 6 a naučit je pracovat s projekty JBoss.org zaštítěnými společností Red Hat.

     

    Repozitář se zdrojovými kódy: https://github.com/qa/pv243

     

    JBoss Developer 5.0.0 M5

     

    Osnova kursu

    1. Úvod, předhled novinek v Java EE 6
    2. CDI, EJB 3.1
    3. Seam 3 (co v CDI chybí)
    4. Zabezpečení Java EE aplikace, JAAS
    5. Ukládání dat v cloudu - Infinispan
    6. Clustering a škálování JBoss AS 7
    7. Management a monitorování JBoss AS 7

     

    Podrobný obsah

    Úvod, předhled novinek v Java EE 6 [Jiří Pechanec, 1.3.]

    Prezentace stručného přehledu nových a aktualizovaných specifikací v Java EE 6

    • Profily
    • Java Servlet 3.0
    • JAX-RS
    • JavaServer Faces 2.0
    • EJB 3.1
    • CDI
    • Bean validation
    • Streaming API for XML

     

    CDI, EJB 3.1 [Jozef Hartinger, Marek Schmidt, 15.3.]

    • CDI
      • Vysvětlení základních principů
      • Dopad na vývoj nových aplikací
      • Diskuse v kontextu s ostatními DI řešeními
    • EJB 3.1
      • Full/Lite
      • Časovač, singleton, asynchronní volání
      • Zjednodušená tvorba modulů (packaging)

    Screencast k cvičením naleznete zde http://www.youtube.com/watch?v=A2AjO7eWjd0

    Seam 3 (co v CDI chybí) [Jozef Hartinger, Marek Schmidt, 29.3.]

    • Přehled modulů
    • Budoucnost Seam 3

     

    Zabezpečení Java EE aplikace, JAAS [Peter Škopek, 12.4.]

    • Co je JAAS
    • Zabezpečení webové aplikace
    • Zabezpečení třívtstvé aplikace
    • Přehled autentizačních modulů
    • Single-Sign On

     

    Ukládání dat v cloudu - Infinispan [Martin Genčúr, Michal Linhard, 26.4.]

    • Paměťový grid - principy
    • Přehled funkcionality
    • Škálování a redundance
    • Transakční prostředí

     

    Clustering a škálování JBoss AS 7 [Radoslav Husár, 10.5.]

    • Co je cluster
    • Principy clustrování
    • JGroups
    • Clustering a fail-over - rozdíly a souvsilosti

     

    Management a monitorování JBoss AS 7 [Rostislav Svoboda, 17.5.]

    • Doménový model JBoss AS 7
    • Management API
    • Management nástroje - konzole

     

    Kontakty

    Jiří Pechanec jpechane@redhat.com

    Tomáš Pitner tomp@fi.muni.cz

    Prerekvizity

    • Znalost programovacího jazyka Java
    • Praktická znalost Java EE 5 technologií nebo absolvování kurzu v rámci studia
      (je dobré mít předchozí znalosti cca na úrovni kurzu PA165 Vývoj pg. systémů v jazyce Java)
    • Zájem o věc :-)

     

    Příprava prostředí v laboratoři

    Vlastní instalace

    Instalace JBoss AS 7.1.1

     

    cd ~
    mkdir pv243
    cd pv243
    unzip -d /var/tmp/pv243 /packages/share/jbdevstudio-5.0.0.m5/jboss-as-7.1.1.Final.zip
    ln -s /var/tmp/pv243/jboss-as-7.1.1.Final jboss-as-7.1
    

     

    Instalace JBoss Developer Studio 5.0.0.M5

     

    module add jbdevstudio-5.0.0.m5

    Spuštění JBDS

     

    jbdevstudio

     

    Konfigurace JBDS - Propojení s JBoss AS 7

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

    jbds-server-1.jpg

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

    jbds-server-2.jpg

    • Home directory: Přes Browse vybrat v domovském adresáři pv243/jboss-as-7.1, JRE: zvolit java-1.6.0-*, kliknout na Finish

    jbds-server-3.jpg

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

    jbds-server-4.jpg

     

    Konfigurace JBDS - Git repozitář

    • Kliknout na Open Perspective v pravém horním rohu, zvolit Other...

    jbds-git-1.jpg

    • Vybrat Git Repository Exploring

    jbds-git-2.jpg

    • Zvolit Clone a Git Repository

    jbds-git-3.jpg

    • URI: git://github.com/qa/pv243.git

    jbds-git-4.jpg

    • Kliknout na Next, Next a Finish
    • Přepnout zpět na JBoss perspektivu

    Virtuální stroj

     

    V terminálu zadat příkaz

    pv243_vbox
    

    Při prvním spuštění proběhne instalace virtuálního stroje a spustí se VirtualBox. Při dalších se instalace přeskakuje.

     

    Import projektu do JBDS

    • Přepnout na Git Repository Exploring perspektivu
    • Zvolit repozitář pv243 -> Working directory -> lesson02-cdi

    jbds-import-1.jpg

    • Pravé tlačítko myši, zvolit Import projects
    • Zvolit Import existing projects

    jbds-import-2.jpg

    • Kliknout na Next a Finish
    • Přepnout na JBoss perspektivu
    • Pravé tlačítko na jméně projektu lesson02, zvolit Team -> Reset
    • Zvolit Tags -> cdi-00, Reset type - Hard, kliknout na Reset

    jbds-import-3.jpg

     

    Spuštění projektu na serveru

    • Zvolit okno Servers, pravé tlačítko, zvolit Add and Remove
    • Zvolit lesson02, kliknout na Add a Finish

     

    Náměty na projekty

    Diplomové/bakalářské

    • Aplikace na správu a publikaci témat diplomových a bakalářských prací
    • Rezervační systém pro správu zdrojů v laboratořích Red Hat
    • Dokončení systému pro alokaci úkolů (http://is.muni.cz/th/208226/fi_m)
    • Vytvoření plnohodnotné Java EE 6 aplikace používané pro výkonostní testy (náhrada DayTrader)
    • Aplikace pro distribuci security manager politik
    • Vzorová aplikace pro Apache DeltaSpike - Expense Tracking (data persistována do Inifinispan)

    Záchranné

    • Rezervační systém pro sportovní centra
    • Systém pro správu skladu
    • Auto-moto bazar
    • Systém pro půjčovny knih

    Požadavky na projekty

    • Týmy maximálně 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ý 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), 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 používat logování do logovacího souboru (nápověda - viz Seam 3)
    • Aplikace bude testovatelná (Arquillian)
    • Aplikace bude nasazena v clusteru dvou uzlů a demonstrována její odolnost vůči výpadku jednoho z nich (lze simulovat na jednom počítači)
    • Bude-li možné, bude aplikace nasazena v PaaS OpenShift. Nezdaří-li se nasazení, bude zdokumentována příčina.
    • Volitelné - aplikace bude vystavovat rozhraní pro komunikaci mezi systémy (použití JAX-RS, JAX-WS)
    • Každý projekt bude prezentován, studenti budou tázáni na části, které implementovali a technologie, které použili