Dankirk / javaee-harjoitus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Saatesanat

JakartaEE ja Microprofile muodostavat yhdessä arkkitehtuurin Java-pohjaisille "enterprise" applikaatioille. Harjoituksessa on luotu tyhjä esimerkkiprojekti, jota olisi tarkoitus laajentaa.

Tukimateriaali esimerkiksi täällä https://eclipse-ee4j.github.io/jakartaee-tutorial/toc.html. Huomioi, että Jakarta on uusi nimi Java Enterprise editionille, joten etsinnöissä kannattaa käyttää apuna myös Java EE termiä.

Harjoituksessa käytetään seuraavia JakartaEE ominaisuuksia:

  • JAX-RS
  • EJB
  • JPA

Lisäksi harjoituksessä käytetään seuraavia Microprofilen ominaisuuksia:

  • Config

Käytä harjoitukseen 2-4h ja palauta se esim. githubin kautta tai muulla tavoin. Jos jokaista kohtaa et osaa/ymmärrä/ehdi, niin kuvaa lyhyesti miten olisit halunnut asian tehdä. Jos et pääse sisään projektin rakenteeseen, niin toteuta alla olevat 10 harjoitusta valitsemallasi ohjelmointikielellä

IDEnä voit käyttää esimerkiksi IntelliJ:tä (ilmainen kokeiluversio https://www.jetbrains.com/idea/), johon saat projektin avautumaan avaamalla projektin juuressa olevan pom.xml tiedoston sillä ja valitsemalla että haluat sen avautuvan projektina.

Esiehdot

  1. Asenna Java (JDK 8 tai uudempi)
  1. Asenna Maven 3 tai uudempi
  1. Vaihtoehto A: Lokaaliymppäristö
  • Lataa Wildfly: https://www.wildfly.org/downloads/
  • Pura ladattu zip
  • Kokeile käynnistää serveri sen juuresta hakemistosta bin/ standalone.sh tai standalone.bat skriptilla (suosittelen ajoa komentoriviltä)
  • serverin pitäisi vastata käynnistyksen jälkeen http://localhost:8080 osoitteessa
  • serverin saa suljettua ctrl/cmd + c komentorivillä tai shutdown skriptilla bin/ kansiosta
  1. Vaihtoehto B: Docker (suositus)

Kääntäminen (projektikansion juuressa)

mvn clean package

Tämä luo ajettavan tiedoston projektin juureen: target/ping.war

Ajaminen/jakelu

Vaihtoehto A: Lokaali

  1. Serverin tulee olla päällä (vastaa http://localhost:8080/)
  2. Kopioi käännöksen lopputulos (ping.war) serverin hakemistoon /standalone/deployments kansioon
  • serveri lataa applikaation
  • tähän kannattaa tehdä skripti, joka kääntää ja kopioi lopputuloksen serverille
  1. Applikaation tulisi vastata nyt osoitteessa http://localhost:8080/ping/resources/test
  2. HUOM! Kantana käytetään muistissa olevaa kantaa, joka resetoituu joka deploymentilla/uudelleenkäynnistyksellä

Vaihtoehto B: Docker

  1. Mac/Linux: aja projektin juuresta buildAndRunDocker.sh
  1. Windows: ks. kommennot ylläolevasta skriptistä ja luo niistä oma .bat tai aja komentorivillä

Tehtävät

  1. Kommentoi kunkin luokan alkuun minkä tulkitset sen tarkoitukseksi
  2. Luo testirajapinnan tervehdystekstiin toinen property, joka tulee osaksi vastausta
  3. Muuta osoitteen http://localhost:8080/ping/resources/ping/{nimi} niin, että se kokeilee palauttaa nimen mukaisen tuloksen kannasta. Jos kannasta ei löydy tulosta, niin palautetaan kannan kaikki arvot
  4. Lisää HTTP rajapinnat uusien Pongien luonnille ja poistolle.
    • Käytä hyväksi esim. curlia tai postmania rajapintojen testaamisessa
  5. Luo vapaavalintainen entiteetti ja sille pari muuttujaa. Tee yhden muuttujan perusteella kysely, joka palauttaa rivit, joissa muuttuja on annetun arvoinen
  6. Lisää sovelluksen käynnistymiseen muutaman testiobjektin luonti luodulle entiteetille
  7. Luo HTTP rajapinta, joka listaa kaikki kannassa olevat luomasi rivit
  8. Luo HTTP rajapinta, joka käyttää hyväksi aikaisemmin tekemääsi kyselyä entiteetin muuttujan perusteella
    • annettu muuttujan arvo tulisi tulla rajapinnan parametrina
    • palauta muuttujan arvolla löytyvät tulokset JSON muodossa
    • jos muuttujan arvolla ei tule tuloksia, niin palauta HTTP status 404
  9. Muuta /ping/resources/ping/{nimi} rajapinta palauttamaan responsen ContentTypenä text/html application/json tilalla
  10. Jätä kommentti minkä koit haastavimmaksi tehtävässä ja kauanko suurinpiirtein käytit aikaa
  11. Bonus: löydätkö koodista kohtia, jotka tulisi tehdä toisin?

About


Languages

Language:Java 96.5%Language:Shell 1.9%Language:Batchfile 1.2%Language:Dockerfile 0.4%