SESsy Library (1) De WebApp

SESsy Library: Een geïntegreerde oefening

Download Locatie: op Github via https://github.com/KULeuven-Diepenbeek/sessylibrary. Zie README.md op de hoofdpagina. SESsy library is:

A Library Management Simulation WebApp for the ‘SES’ (Software Engineering Skills) course

Een boek uitlenen in de SESsy Library webapp.

Installatie

Download via bovenstaande Github link, of met git clone. Dit is een “Gradle” project, die de build van ons Java ecosysteem verzorgt. Dat wil zeggen dat het Gradle systeem automatisch libraries (jar bestanden) download van een centrale repository, moesten die nodig zijn. Het enige wat jij moet installeren is Java:

Minimum Vereisten

  • Java 11
  • Gradle 5.6.x of hoger

Installeer Gradle en de lokale dependencies door middel van de Gradle wrapper. Voer in de sessylibrary map gradlew.bat (of ./gradlew voor Unix) uit. Dit download automatisch de juiste versie van Gradle.

Het project builden

Command-line: gradlew.bat shadowjar.
Het resultaat is sessylibrary-1.0-SNAPSHOT-all.jar in de build\libs folder.

Met IntelliJ: open het project (selecteer de root folder), en klik op ‘build’. Alternatief kan je met IntelliJ de gradle.build file openen en de juiste task starten door in de Gutter op het groene start knopje te klikken.

Het project (de server) opstarten

Er zijn verschillende manieren om de gebuilde jar file aan het draaien te brengen:

  1. Command-line Java: Na het builden van de jar, uitvoeren (in de root folder) met java -jar build\libs\sessylibrary-1.0-SNAPSHOT-all.jar server app.yml.
  2. Command-line Gradle: (eenvoudiger) ./gradlew serve. Voert bovenstaande commando uit, reeds door ons zo geconfigureerd.
  3. IntelliJ: Menu Run -> Run… Kies voor klasse be.kuleuven.sessylibrary.SessyLibApplication en geef als program arguments (NIET met VM options) “server app.yml” in. Klik op Apply/Run.

De applicatie staat nu live op http://localhost:8080!

Indien je “port already in use” Exceptions krijgt, en je niet in de mogelijkheid bent om poort 8080 vrij te maken, kan je in app.yml kiezen voor een andere HTTP poort. Plak daarom onderstaande stuk in je config file:

server:
  rootPath: /api/
  applicationConnectors:
  - type: http 
    port: 9000 (of 8088, of ....)

Componenten

(Documentatie overgenomen uit de Git repository README.md)

Backend

DropWizard Java RESTful API that integrates Jetty/Jackson/… functionality in a nice all-in-one package. This means executing the jar automatically bootstraps a webserver, and REST calls can be easily added using javax.ws annotations. See be.kuleuven.sessylibrary.api classes for examples.

Frontend

VueJS Progressive single-page JS framework that calls the above API endpoints and is served from the very same webserver thanks to the dropwizard-assets module.

The compiled vuejs webpage should be copied to src/main/resources/assets - index.htm is served at /.

Students do not need to edit the frontend part of this application and may consider this as a ‘given’.

Building and running the Frontend source:

  1. npm install in the frontend subdir
  2. npm run serve in the frontend subdir

Extra leermateriaal