/a4m36jee-project

Semestral project in A4M36JEE class at FEE CTU.

Primary LanguageJavaMIT LicenseMIT

a4m36jee-project

Build Status

Semestrální projekt v předmětu A4M36JEE na FEL ČVUT.

Nasazeno na Openshift Developer Preview: http://airlines-airlines.44fs.preview.openshiftapps.com.

Team

  • Filip Klimeš (vedoucí)
  • Jakub Moravec
  • Ondřej Kratochvíl
  • Ondřej Slavíček

Specifikace

Realizujte projekt letecké společnosti pro plánování a rezervaci letů. Hlavním požadavkem na realizaci produktu je implementace RESTful API, které spravuje dostupné datové zdroje: Destination (seznam destinací, kam společnost létá), Flight (seznam plánovaných, zrušených i uskutečněných letů) a Reservation (rezervace určitého počtu míst ve zvoleném letu). Součástí implementace musí být i tenký klient implementovaný jako webová stránka prohlížeče. Aplikace dále musí umět odeslat e-mail o potvrzení rezervace po jejím vytvoření. Zároveň je potřeba nahrávat seznam letů ve formátu CSV pomocí dávkových operací.

Class diagram

Git WorkFlow

Feature Branch Workflow

Checklist

  • 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 dodána též
    • nasazená aplikace bežící v OpenShift 3 (developer preview)
    • volitelně jako standalone fatjar pomocí WildFly Swarm
  • 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

Rozdělení prací

Úkol FK JM OK OS
Specifikace + UML X
JPA 2 + Bean Validation X X X
Byznys vrstva X
Prezentační vrstva X
WebSocket X X
Arquillian X
Security X X
JMS X
REST + Security X X X
Concurrency/Batching X
Openshift / Swarm Fatjar X X
Clustering X
Prezentace X

Deployment & testing

Deploying via Maven (Wildfly musí být spuštěný na standardním portu)

mvn clean package wildfly:deploy

Testing via Maven (Wildfly musí být spuštěný na standardním portu)

mvn clean package test -Parq-wildfly-remote

Maven profily

  • default
    • Přeskočí všechny testy
  • unit-tests
    • Spustí pouze testy s anotací @Category(UnitTest.class)
  • arq-wildfly-remote
    • Spustí všechny testy, nasazuje Shrinkwrap archiv na Wildfly (musí být spuštěný)